第一步

建立编译环境,rtems的编译环境需要使用newlib的库,所以ubuntu自带的gcc是不可以的,我是参照下面的博客才编译成功的,之前走了好多弯路。

http://blog.sina.com.cn/s/blog_70dd169101013d4c.htm

第二步

编译rtems,我使用的是4.10.2,而参照的博客使用的是4.11(博客有些地方不清楚的看下面的博客),区别应该是有的,不过都能成功烧写。

fishOnFly的http://blog.csdn.net/wuhzossibility/article/details/9262055

博主有如下内容,我不是很清楚,后来我在start.s里面添加了bss的相关代码:

***********************************************************************

7.0. 修改第一阶段的硬件初始化,极度汇编依赖

在start.s中,完成的工作:
    1 禁用所有可屏蔽中断;
    2 用~0~填充未初始化数据段~.bss;
    3 初始化~C~程序调用栈;
    4 从~ROM~中将初始化数据拷贝到~RAM~中;
    5 调用~boot_card~函数。
7.0.6. 具体的请看附件

***********************************************************************

以下就是我添加在start.s的代码,参照雪松的博客http://blog.csdn.net/coolbacon/article/details/6092927

/* zero the bss */
ldr r1, =_bss_end_
ldr r0, =_bss_start_
_bss_init:
mov r2, #0
cmp r0, r1
strlot r2, [r0], #4
blo _bss_init /* loop while r0 < r1 */

  修改完成之后就是编译工作,请参考雪松这篇博客的最下面那段http://blog.csdn.net/coolbacon/article/details/6101754或者fishOnFlyhttp://blog.csdn.net/wuhzossibility/article/details/9262055#reply,主要区别是configure的一些配置,后者编译会生成一个ticker.exe的例子,而前者是hello.exe,然后通过命令将exe文件转化为bin文件烧写。

第三步

烧写

笔者首先是使用了tekkamanninja提供的bin文件(网上一搜就搜到了),但是似乎它的烧写位置显然是不对的(0x30008000)。

具体请看下面俩篇文章,俩位大牛对烧写位置进行了考究,欲了解实情的就看看吧:

雪松的http://blog.csdn.net/coolbacon/article/details/6262776

知秋一叶http://blog.csdn.net/rickleaf/article/details/6260292

笔者最后决定参照知秋一叶的方法,将文件烧写到0x30000100(笔者比较懒,不想像雪松那样改了)。

烧写方法有很多,但是tekkamanninja提供的uboot.bin似乎烧写位置发生冲突,笔者每次烧写到0x30000100都会烧不进去,烧到0x30008000是可以烧进去了但是go 0x30008000就没反应了。因此笔者狠心使用了裸机烧写,幸好最近新买的友善之臂mini2440有superboot这个神器,操作非常容易(具体看它的手册吧,使用的是minitools这个工具)。选择逻辑程序,烧写位置就是0x30000100,烧写成功!哈哈~

笔者是个big rookie,小小得意一下,不过问题还是有很多不明白的,接下来还会尝试使用uboot来加载,如有发现会继续更新的说!

最新文章

  1. 【Java EE 学习 16 上】【dbcp数据库连接池】【c3p0数据库连接池】
  2. Android 基于Android的手机邮件收发(JavaMail)之三(邮件接收)
  3. .net开发中要注意的事项
  4. Smart210学习记录------nor flash驱动
  5. C#动态多线程实例
  6. HDU 1074 Doing Homework 状压DP
  7. 【荐】Redis学习资料汇总
  8. linux运维基础__争取十月前研究的差不多
  9. [Django 1.5] Django 开发学习资源链接
  10. Codeforces 286E
  11. Face-landmarks-detection-benchmark 人脸特征定位网站汇总
  12. php中curl模拟post提交多维数组(转载)
  13. HtmlUnit入门二
  14. Hadoop — MapReduce原理解析
  15. Android四大组件的简介
  16. show profiles 分析sql耗时瓶颈
  17. 关于sql中in 和 exists 的效率问题
  18. Navicat 的安装及破解
  19. 查询SQL阻塞语句
  20. protobuf 源代码分析 (1)准备工作

热门文章

  1. usaco training 4.2.4 Cowcycles 题解
  2. Unity-Shader-镜面高光Phong&amp;BlinnPhong-油腻的师姐在哪里
  3. 虚拟硬盘格式vdi、vhd、vmdk相互转换
  4. Servlet端 接收不到4096,8192长度的JSON参数
  5. Java开发中碰到的Map的坑
  6. 计算BMI
  7. apt-get 安装ubuntu-tweak
  8. 玩玩微信公众号Java版之四:自定义公众号菜单
  9. HDOJ2012-素数判定
  10. 学生成绩管理系统——C语言实现