在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 1810|回复: 0

[原创] Linux平台下UT4412BV03裸机开发指南(二)

[复制链接]
发表于 2015-10-16 13:53:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
Linux平台下UT4412BV03裸机开发指南()


第一章 汇编点亮LED第一节 查看原理图

UT4412BV03开发板上提供了4个可编程用户LED,原理图如下:


在原理图中搜索引脚“EINT5”,可得:


可见,LED的D3、D4、D6、D7分别使用cpu端口资源为GPX0_5、GPX0_7、GPX2_4、GPX2_5.

第二节 程序相关讲解

完整代码见目录1.leds_s。

[size=12.0000pt]1. start.S

由原理图可知,点亮UT4412BV03的4个LED需如下2个步骤:

第一步:设置寄存器GPX0CON和GPX2CON,使GPX0_5、GPX0_7、GPX2_4、GPX2_5四个引脚为输出功能;

第二步:往寄存器GPX0DAT/GPX2DAT相应的位写0,使GPX0_5、GPX0_7、GPX2_4、GPX2_5四个引脚输出低电平,4个LED会亮;相反,往寄存器GPJ2DAT写1,使GPX0_5、GPX0_7、GPX2_4、GPX2_5四个引脚输出高电平,4个LED会灭;


以上两个步骤即为start.S中的核心内容,start.S里面涉及的汇编指令请自行学习GNU汇编指令集,这里不再进行赘述。

[size=11.5000pt]2. Makefile

led.bin: start.o


arm-linux-ld -Tled.lds -o led.elf $^


arm-linux-objcopy -O binary led.elf led.bin


arm-linux-objdump -D led.elf > led_elf.dis


gcc -o my_mkbl2 my_mktools.c


./my_mkbl2 $@ bl2.bin 14336


sudo ./sd_fusing.sh /dev/sdb bl2.bin


%.o : %.S


arm-linux-gcc -o $@ $< -c


%.o : %.c


arm-linux-gcc -o $@ $< -c


clean:


rm *.o *.elf *.bin *.dis my_mkbl2 –f

在Makefile所在的目录下执行make命令,系统会进行如下操作:

第一步 :执行arm-linux-gcc -o $@ $< -c命令将当前目录下存在的汇编文件和C文件编译生成.o文件;

第二步:执行arm-linux-ld -Tled.lds -o led.elf $^将所有.o文件链接成elf文件,-Tled.lds表示程序的链接地址,由于目前我们编写的代码是位置无关码,所以程序能在任何一个地址上运行;

第三步:执行arm-linux-objcopy -O binary led.elf led.bin将elf文件抽取为可在开发板上运行的bin文件;

第四步:执行arm-linux-objdump -D led.elf > led_elf.dis将elf文件反汇编后保存在dis文件中,调试程序时可能会用到;

第五步:执行./my_mkbl2 $@ bl2.bin 14336命令,my_mkbl2处理led.bin文件,my_mkbl2由my_mktools.c编译而来,具体解释请看my_mktools.c相关讲解;

第六步 :执行sudo ./sd_fusing.sh /dev/sdb bl2.bin将bl2.bin烧写进SD卡。(sd_fusing.sh脚本程序来自韦东山老师)

3. my_mktools.c

4412的启动过程,我们在下一章再说.my_mktools.c大家可以看看源码,韦东山老师已经做好了注释.现在只要知道my_mkbl2的作用是截取用户提供的bin文件前(14K-4)字节数据,算出4字节的校验码,然后这两部分数据组合成14KB的文件bl2.bin,它就是BL2.

4.led.lds

SECTIONS

{


. = 0x02023400;


.text : {



start.o



* (.text)


}



.rodata : {



* (.rodata)


}



.data : {



* (.data)


}



.bss : {



* (.bss)


}

}

0x02023400就是程序要加载的地址,.text是代码段,.rodata是只读数据段,.data是数据段,.bss

是bss

第三节 编译代码和烧写运行

将sd卡插入PC,在Ubuntu终端执行如下命令:

#cd 1.leds_s

#make

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-12 01:06 , Processed in 0.027466 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表