8160|22

241

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

Helper2416-07——裸机第一弹——点亮LED+SD启动+源码 [复制链接]

 
本帖最后由 yuanlai2010 于 2014-7-10 15:15 编辑

裸机第一弹——点亮LED+SD启动

参与Helper2416开发板助学计划心得


1:LED硬件原理图





Helper2416开发板只为我们预留了一个LED——D8——连接到了GPB1——当GPB1输出为低电平时D8点亮



2:工程搭建

我使用的是GNU工具链,使用makefile文件来管理工程,所以这一步只需建立工程目录就行了。



3:代码编写

在工程目录中创建led_on.S文件,代码如下:

  1. @******************************************************************************
  2. @ File:led_on.S
  3. @ 功能:LED点灯程序,关闭看门狗,点亮D8
  4. @******************************************************************************   
  5. .text
  6. .global _start
  7. _start:
  8.                         LDR                R0,        =0x53000000                        @R0设为WTCON寄存器
  9.                         LDR                R1, [R0]                                @把WTCOM寄存器的值读入到R1
  10.                         BIC                R1,        R1, #0x01                        @清除最低位
  11.                         STR                R1,        [R0]                                @把值写入WTCON寄存器关闭看门狗
  12.                         
  13.                         LDR     R0,        =0x56000010                        @ R0设为GPBCON寄存器。此寄存器
  14.                                                                                         @ 用于选择端口B各引脚的功能:
  15.                                                                                         @ 是输出、是输入、还是其他
  16.             MOV     R1,        #0x00000004        
  17.             STR     R1,        [R0]                     @ 设置GPB1为输出口, 位[3:2]=0b01
  18.             
  19.             LDR     R0,        =0x56000014             @ R0设为GPBDAT寄存器。此寄存器
  20.                                                                                         @ 用于读/写端口B各引脚的数据
  21.             MOV     R1,        #0x00000000              @ 此值改为0x00000002,
  22.                                                                                         @ 可让D8熄灭
  23.             STR     R1,        [R0]                     @ GPB1输出0,D8点亮
  24.                         
  25. MAIN_LOOP:
  26.             B       MAIN_LOOP
  27.                         
  28. .end
  29.                         
复制代码
4:编写makefile

在工程目录中创建makefile文件,内容如下:

  1. led_on.bin : led_on.S
  2.         arm-linux-gcc -g -c -o led_on.o led_on.S
  3.         arm-linux-ld -Ttext 0x40000000 -g led_on.o -o led_on_elf
  4.         #用IROM启动模式,代码会拷贝到起始地址为0x40000000的steppingstone开始运行,所以链接地址设置为从0x40000000开始
  5.         arm-linux-objcopy -O binary -S led_on_elf led_on.bin
  6. clean:
  7.         rm -f   led_on.bin led_on_elf *.o
复制代码

5:代码编译

在led_on.S文件和makefile文件都编写完后就可以开始编译了,虽然只有一个源文件,为了养成好习惯,我还是使用makefile来管理:

1:通过Putty远程登入CentOS主机,cd到工程目录



2:执行 make 开始编译,得到需要的.bin文件



6:烧写SD卡&运行

使用光盘自带的烧写软件IROM_Fusing_Tool IROM_Fusing_Tool.rar (141.93 KB, 下载次数: 38)



烧写完成(这里只用BootLoader这一跨,其他为空)

开始我以为到这里从sd卡启动就可以点亮led了,但是尝试好几次都不能成功,原因就是如我上一篇帖子所说的“固化代码会直接从SD/MMC卡的一个特殊位置读出8k的代码”,而直接编译器生成的二进制代码都是不满足IROM SD/MMC启动所要求的代码存放格式的。所以在烧写到SD卡之前需要对*.bin文件进行一定的调整。



这里我使用网友分享的一个小软 SdBoot.rar (27.88 KB, 下载次数: 31, 售价: 2 分芯积分)
来完成这部分工作,完成后将会生成一个*_1.bin文件,把这个文件烧写到SD卡就可以运行了。

运行效果如下:



下一步打算自己编写一个bin文件处理程序,直接在linux环境下运行,这样可以通过makefile直接调用,简化操作过程!

论坛ID:yuanlai2010

发表时间:2014-07-10





最新回复

很好的资料,把我的fl2416用起来   详情 回复 发表于 2020-1-16 08:41

赞赏

3

查看全部赞赏

点赞 关注(1)

回复
举报

241

帖子

4

TA的资源

纯净的硅(初级)

推荐
 
不足论 发表于 2014-7-11 09:05
SdBoot.rar能解释下吗

可以,等下我再发一篇帖子,专门讲如何制作SD卡启动文件的,到时候你可以来看看。也请多顶顶

点评

好的  详情 回复 发表于 2014-7-11 11:22
 
 

回复

785

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
酷啊                           
 
个人签名我从不担心我努力了不优秀,只担心优秀的人都比我更努力。如果你无法忍受孤独,就不要追逐梦想。每一个优秀的人,都有一段沉默的时光。在那一段时光,你付出了很多努力,忍受孤独和寂寞,不抱怨不诉苦,最后渡过了这
 
 

回复

1461

帖子

1

TA的资源

纯净的硅(中级)

板凳
 
用汇编,大神啊。
 
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

4
 
高大上            
 
 
 

回复

1204

帖子

1

TA的资源

纯净的硅(初级)

5
 
能用c吗

点评

可以……IROM已经帮我们初始化好了堆栈了……  详情 回复 发表于 2014-7-10 16:18
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

6
 
不足论 发表于 2014-7-10 16:04
能用c吗

可以……IROM已经帮我们初始化好了堆栈了……
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

7
 
给力
 
 
 

回复

554

帖子

0

TA的资源

版主

8
 
这个不错!给个赞!
另外,说明一下,我的SD卡烧写工具是针对UBOOT的,如果使用uboot源码里的一个脚本:mkmovi来操作一下编译出来的这个bin文件的话,就可以从sd卡直接启动了。
原理很简单,看一下mkmovi这个脚本就行了。关于从SD卡启动更详细的文档请参考这里:

S3C2450_51_16_IROM_ApplicationNote.pdf (224.17 KB, 下载次数: 43)




点评

多谢BOSS指点,这个文档我看过,但是有些地方还没能明白,先去看看这个mkmovi脚本。  详情 回复 发表于 2014-7-10 20:12
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

9
 
spacexplorer 发表于 2014-7-10 20:03
这个不错!给个赞!
另外,说明一下,我的SD卡烧写工具是针对UBOOT的,如果使用uboot源码里的一个脚本:mk ...

多谢BOSS指点,这个文档我看过,但是有些地方还没能明白,先去看看这个mkmovi脚本。
 
 
 

回复

38

帖子

1

TA的资源

一粒金砂(中级)

10
 
强大啊!学习了
 
 
 

回复

43

帖子

0

TA的资源

一粒金砂(中级)

11
 
来哥给力啊。。
 
 
 

回复

1204

帖子

1

TA的资源

纯净的硅(初级)

12
 
SdBoot.rar能解释下吗

点评

可以,等下我再发一篇帖子,专门讲如何制作SD卡启动文件的,到时候你可以来看看。也请多顶顶  详情 回复 发表于 2014-7-11 09:22
 
 
 

回复

1204

帖子

1

TA的资源

纯净的硅(初级)

14
 
yuanlai2010 发表于 2014-7-11 09:22
可以,等下我再发一篇帖子,专门讲如何制作SD卡启动文件的,到时候你可以来看看。也请多顶顶

好的
 
 
 

回复

1531

帖子

49

TA的资源

五彩晶圆(中级)

15
 
厉害啊,我要跟在后面好好学习

点评

我也是在慢慢摸索,大家一起交流、一起学习嘛。  详情 回复 发表于 2014-7-11 21:55
 
个人签名NXP新年新气象大家一起嗨起来 + 恩智浦KW41Z有奖创意征集令高能来袭 +https://www.eeworld.com.cn/huodong/201611_NXPKW41ZActivity1/index.html
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

16
 
Sur 发表于 2014-7-11 21:48
厉害啊,我要跟在后面好好学习

我也是在慢慢摸索,大家一起交流、一起学习嘛。
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

17
 
楼主牛逼,准备追着你的贴学习!
 
 
 

回复

1万

帖子

16

TA的资源

版主

18
 
楼主的程序用什么编辑器写的呢?编译是在PC主机这端编译有吗????

点评

代码是在Windos下用Notepad++编写的,编译器是在服务器主机CentOS下。  详情 回复 发表于 2014-7-20 08:20
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

19
 
ddllxxrr 发表于 2014-7-20 07:09
楼主的程序用什么编辑器写的呢?编译是在PC主机这端编译有吗????

代码是在Windos下用Notepad++编写的,编译器是在服务器主机CentOS下。

点评

谢谢回答明白了  详情 回复 发表于 2014-7-20 09:27
 
 
 

回复

1万

帖子

16

TA的资源

版主

20
 
yuanlai2010 发表于 2014-7-20 08:20
代码是在Windos下用Notepad++编写的,编译器是在服务器主机CentOS下。

谢谢回答明白了
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表