【tiny6410】led裸板程序

发布者:Zhenai5201314最新更新时间:2024-06-04 来源: elecfans关键字:tiny6410  led  裸板程序 手机看文章 扫描二维码
随时随地手机看文章

start.s文件

启动代码很简单,主要做一些硬件相关的设置:告诉CPU外设的基地址、关看门狗、设置栈(为调用c语言准备)

 

.globl _start

_start:


/* 硬件相关的设置 */

    /* Peri port setup */

    ldr r0, =0x70000000

    orr r0, r0, #0x13

    mcr p15,0,r0,c15,c2,4       @ 256M(0x70000000-0x7fffffff)

    

/* 关看门狗 */

/* 往WTCON(0x7E004000)写0 */

ldr r0, =0x7E004000

mov r1, #0

str r1, [r0]


/* 设置栈 

因为c语言的调用需要到栈

*/

ldr sp, =4*1024+0x50000000 //设置栈地址,+0x50000000是因为下载到DDR里面运行的,而DDR开始地址是0x50000000

bl main //跳转到main运行

halt:

b halt

 

led.c文件

配置GPK4作为IO输出口,并使其值为0


//定义寄存器

#define GPKCON0 (*((volatile unsigned long *)0x7F008800))

#define GPKDAT (*((volatile unsigned long *)0x7F008808))

int main()

{

/* gpk7设为输出引脚 */

GPKCON0=GPKCON0&(~(0xf<<28))|(1<<28); //0001 0000 0000 0000 0000 0000 0000 00000=0x10000000

/*gpk7输出0*/

GPKDAT=GPKDAT & (~(1<<7));

return 0;

}


Makefile文件

 

led.bin: start.o led.o

arm-linux-ld -Ttext 0x50000000 -o led.elf start.o led.o #链接到0x50000000地址,因为我们下载到DDR中运行,DDR开始地址是0x50000000

arm-linux-objcopy -O binary led.elf led.bin #生产bin文件

arm-linux-objdump -D led.elf > led.dis #产生反汇编文件


start.o : start.S

arm-linux-gcc -o start.o start.S -c #编译start.S

led.o:led.c

arm-linux-gcc -o led.o led.c -c #编译led.c

clean:

rm *.o led.elf led.bin led.dis


由于我们把程序加载到DDR(0x5000 0000)开始的地址上运行,从start.S中设置SP也在DDR中,在Makefile中的text的链接地址也从链接到DDR的地址中;所以这个程序不适用于没有初始化DDR或DDR的基地址不是0x5000 0000的板子上运行。

假如要在内部SRAM中运行的话把0x5000 0000改成0即可

 

make生产led.bin文件怎么加载到tiny6410的DDR中运行呢?

我使用的是minitool工具,

准备工作:
1. 用SD-Flasher工具将Superboot烧写到SD卡中。
2. 将光盘中的images/FriendlyARM.ini文件拷贝到SD卡中的images目录下。
3. 编辑SD卡中的images/FriendlyARM.ini文件文件,增加以下内容:

USB-Mode = yes

 

连接步骤:
1. 将开发板上的S2开关切换到SD卡或NOR flash启动模式
2. 上电开机,开发板将进入USB下载模式,LCD上会显示“USB Mode: Waiting...”
3. 用USB线连接电脑与开发板
4. 连接成功,LCD上会显示'USB Mode: Connected'

这是开发板就已经运行加载到DDR中的程序了


关键字:tiny6410  led  裸板程序 引用地址:【tiny6410】led裸板程序

上一篇:LPC3250 ttyS1 发送问题解决办法
下一篇:S3C2440看门狗定时器(Watchdog)

推荐阅读最新更新时间:2026-03-20 11:44

OK6410学习之LED程序及RAM烧录
GPIO 每组GPIO有5个寄存器 GPxCON配置寄存器 GPxDAT数据寄存器 GPxUN上下拉电阻控制寄存器 OK6410是通过GPM控制的 点亮LED灯通过改变GPM中GPMCON和GPMDAT的值使其亮暗 右边是3.3V的高电平,左边需要有个低电平输出才能导通,所以GPMCON需要设成输出,GPMDAT的低4位需要设置成0 上图可以看出,OK6410中GPM0-3是控制LED等1-4的,所以我们只需要控制GPM0——3 ldr r1, =0x7F008820 @r1的存储为0x7F008820,这里是GPMCON的地址 ldr r0,=0x1001 @这里一共控制了GPM0到GPM3,
[单片机]
OK6410学习之<font color='red'>裸</font><font color='red'>板</font><font color='red'>LED</font><font color='red'>程序</font>及RAM烧录
ARM嵌入式学习--OK6410程序--1.GPIO控制LED
基本概念: 1.GPIO--通用IO口,通过芯片针脚来控制或读取外设的数据。 2.GPIO口的使用原理,通过设置GPXXCON, GPXXDAT, GPXXPUL等寄存器来设置GPIO口的状态。 原理图: 跟硬件相关的部分,一定要阅读原理图,然后通过查找SoC的用户手册来查找相应的寄存器设置即可。 底板电路图: 核心板电路图: 可知在OK6410上4个LED灯是通过GPM这一组的GPIO口控制的,分别是GPM0-GPM3四组。 然后打开S3C6410X User's Manual,查找GPM相关的寄存器: 通过上面内容找到: GPMCON 地址 0x7F008820 GPMDAT 地址 0x7F0088
[单片机]
ARM嵌入式学习--OK6410<font color='red'>裸</font><font color='red'>板</font><font color='red'>程序</font>--1.GPIO控制<font color='red'>LED</font>
FL2440 (1) 程序 LED
程序从JZ2440中改的 用的到文件如下: crt0.S,leds.bin,leds.c,leds.lds,Makefile crt0.S @****************************************************************************** @ File:crt0.S @ 功能:通过它转入C程序 @****************************************************************************** .text .global _start _start: ldr r0, =0x
[单片机]
S3C2440开发学习——如何烧写程序
S3C2440的裸板烧录的方法有:并口,OpenJTAG口,nor flash的u-boot,J-link,TFTP。 并口:不常用。 OpengJTAG口:裸板烧录u-boot时,起关键的作用。通过oflash命令将u-boot烧录到nor flash,当u-boot烧录OK之后,开 发板可以进行正常的启动。 Nor flash 的u-boot:此种方法的前提是,已经使用OpenJTAG口将u-boot烧录到开发板的nor flash中。通过menu中的 down to NAND Flash 等选项,配合配合Dnw程序,可以完成USB传输kernel和root到开发板的过程。注意:USB 驱动的安装,参
[单片机]
2440程序之点灯
LED对应的引脚是GPF4、GPF5、GPF6。 使用的编译器为arm-linux-gcc-4.5.1。 包括四个文件head.S main.c main.lds Makefile。 head.S .text .global _start _start: ldr r0, =0x53000000 @Close WATCHDOG mov r1, #0x0 str r1, ldr sp, =1024*4 ldr lr,=loop bl main @Call C loop:
[单片机]
Tiny210和Tiny4412程序烧写比较
1、Tiny4412启动时首先运行固化在芯片内部iROM中的程序,把启动设备(可能是EMMC/nand flash、SD、USB启动)特定位置处的程序读入片内存 (iRAM) ,并执行它,BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个被称为 BL2(Bootloader 2) ,是我们编写的源码。(详情可参考博文“Exynos4412的启动过程分析”)在汇编流水灯程序中我们通过mkbl2工具制作的BL2: sudo ./sd_fusing.sh /dev/sdc ../../../hardware/1th_led_s/led.bin 分析sd_fusing.sh可知: #################
[单片机]
Tiny6410裸机编程——(一)SD卡启动
友善提供的SuperBoot功能强大,在其启动过程中已经对S3C6410做了很多初始化的工作,在裸机编程时使用它不利于了解ARM的启动过程。所以计划直接将裸机程序烧到SD卡中启动。 使用友善提供的SD-Flasher.exe程序,经过多次实验,都无法将裸机程序烧写到SD卡上,2G,4G,小卡,大卡都试了一遍,没有成功。后来想到使用winhex直接烧写到SD卡,才成功完成实验。 我是将裸机程序使用winhex烧写到4G的大卡上,下面以led.s为例,记录一下全过程。 首先在虚拟机中编译led.s,我的环境是winxp,vmware10,gcc 4.6.3。 1: cd 1.led.s 2: make clean 3: m
[单片机]
<font color='red'>Tiny6410</font>裸机编程——(一)SD卡启动
记录在tiny6410平台上采用4GSD卡来启动uboot和烧写nand flash uboot
下面这种方法是从网上转的 没有验证 环境:ubuntu 13.04 一、首先制作sd启动盘: 插入SD卡 sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmcblk0 seek=1 tiny210v2-uboot.bin来自: http://www.arm9home.net/read.php?tid-80476.html 二、SD卡分区 卸载SD卡, sudo /sbin/fdisk /dev/mmcblk0 如果你的SD卡上有几个分区 Command (mfor help): d   回车 删除硬盘分割区属性 Partitionn
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved