买了开发板有一段时间了,由于之前没有学习过ARM9,直接学习的ARM11,而在网上ARM11的学习资料有又相对较少。本人经过了一段时间的摸索,于是想把学习过程记录下来,供友人参考指正。

想学ARM之前讨教过一些人,建议向学写裸机程序,不要一上来就抱着内核的书啃。所以本人就开始了裸机开发的历程。在嵌入式系统中分为硬件和软件。软件的作用就是驱动硬件,为设备使用者提供服务。典型的嵌入式软件层次分为:驱动层、OS、应用软件。在简单的嵌入式系统中(如51单片机系统)是不配置OS层。此处所说的系统是指一个完整体系的意思,例如:一个51的单片机加上18B20加数码管显示就构成了一个测温系统。所以在简单的嵌入式系统中程序需要自己初始化硬件环境来运行,成为裸机程序。其实我之前写的51的程序就是裸机程序。裸机的意思是指不带操作系统。裸机程序需要直接操作硬件设备。裸机程序一般采用少量的汇编加C语言来编写的。因为汇编在访问硬件方便更有执行力。所以学习一些汇编还是有必要的。例如PC机上的BIOS就是裸机程序。BOIS=Basic Input/Output System,基本输入输出系统,全称是ROM-BOIS,是只读存储器基本输入/输出系统的简写,它实际是一组被固化到电脑中,为电脑提供最低级最直接的硬件控制的程序,它是连通软件程序和硬件设备之间的枢纽,通俗地说,BOIS是硬件与软件程序之间的一个“转换器”或者说是接口(虽然它本身也只是一个程序),负责解决硬件的即时要求,并按软件对硬件的操作要求具体执行。

基于ARM的嵌入式系统一般都存在OS层,应用程序无需直接操作硬件,学写ARM裸机程序的意义有:裸机程序可以作为嵌入式操作系统的BOIS。为写驱动程序打下基础。进行硬件验证。联系ARM汇编,硬件控制的技巧。

裸机程序的开发流程:编码---->编译------>调试------->下载

编码的过程中我们会用到汇编语言和C语言。在windows环境下的编码工具主要有:ADS、RVDS、MDK。由于我买的是S3C6410的板子,所以我选择RVDS2.2作为开发环境,不过这也是过渡版本,因为ARM官网最新版本的RVDS4.1更加好用,开发更加快。我经过一段时间的摸索发现RVDS4.1有点搞不定,而且例程较少,于是先选择RVDS2.2进行过度一下。而且RVDS和ADS相识。用过ADS就可以直接用RVDS2.2。而且历程也比较多便于参考学习。

编译器目前主要有两大类:armcc(ARM标准编译器)和arm-linux-gcc(GNU ARM-linux编译器)。编译出来的ELF格式的文件需要转换为bin格式的文件才能裸机运行。ADS和RVDS自动转换。arm-linux-gcc需用arm-linux-objcopy工具手工转换。关于调试可以用jlink,也可以通过编写程序进行调试,很多程序可以直接输出信息到串口,通过串口信息的反馈来进行调试。而且这种调试方式速度比较快。

下载是指把可执行的BIN文件下载到开发板上的Flash之中,让其完全脱离调试环境完全独立运行、如果一个空板,即Flash中没有任何程序,这时需要一些特殊下载方式:用JTAG烧录工具下载到Flash之中、S3C6410支持SD卡启动,可以把下载的文件放在SD卡上,由SD卡里的BOOTLOADER来下载、如果Flash上烧录有bootloader,它往往自带有烧录功能 ,可以通过TFTP/USB/串口方式从PC机下载到设备上。

关于对裸机程序的理解就写到这里》

S2C6410裸机程序学写笔记(一)什么是裸机程序相关推荐

  1. zynq+linux固化程序,MiZ702学习笔记6——ZYNQ如何固化程序

    上次,我们讲到了EMIO的使用,其实那就是一个最简的"PS + PL"运用的体现.我们之前是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.但是 ...

  2. 微信小程序开发自学笔记 —— 三、理解小程序宿主环境

    理解小程序宿主环境 小程序可以调用宿主环境提供的微信客户端的能力. 渲染层和逻辑层 小程序的运行环境分成渲染层和逻辑层,WXML模板和WXSS样式工作在渲染层,JS 脚本工作在逻辑层. 小程序如何把脚 ...

  3. python示例异常处理与程序调试_笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  4. 微信小程序开发学习笔记001--认识微信小程序,第一个微信小程序

    第一天,认识微信小程序,第一个微信小程序 1.什么是微信小程序? 是h5网页嘛?不是 微信张小龙说: 小程序是一种不需要下载安装即可使用的应用, 它实现了应用"触手可及"的梦想,用 ...

  5. python解魔方程序_写一个解二阶魔方的程序

    本文需要读者有一定的魔方基础, 最起码也要达到十秒内还原二阶魔方的水平, 并且手上最好有一个二阶魔方, 否则文中的很多东西理解不了. 另外, 这里使用的算法是我自己写着玩的, 如果你需要更成熟和专业的 ...

  6. 男程序员写代码的样子 VS 女程序员写代码的样子

    @IT程序猿 微博网友评论: @墙头多可我只爱一个:可能还要再猛一点 @天秤喜帖街:太真实了叭 @直到世界尽头Night:就差抓耳挠晒 变猴子 @Bridget暖酥酥:哈哈哈哈这就是为啥我不喜欢写代码 ...

  7. Java程序如何写判断闰年_用Java程序判断是否是闰年的简单实例

    我们知道,(1)如果是整百的年份,能被400整除的,是闰年:(2)如果不是整百的年份,能被4整除的,也是闰年.每400年,有97个闰年.鉴于此,程序可以作以下设计: 第一步,判断年份是否被400整除, ...

  8. c语言每次堆的变化是1k,DSPXC语言+程序烧写讲述.ppt

    DSPXC语言程序烧写讲述 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ...

  9. hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理

    点击上方,关注我哈 (文章底部可以评论,欢迎对文章进行点评和知识补充) 数控编程教学 订单 | 技术 | 干货 | 编程 关注可加入机械行业群 [邹军,十多年数控工作经验,现自创一套有理论,有干货,还 ...

最新文章

  1. Centos 7环境下源码安装PostgreSQL数据库
  2. android的UDC功能,Android实现搜索历史功能
  3. 【渝粤教育】国家开放大学2019年春季 2508学前儿童语言教育 参考试题
  4. Filter过滤要登录的页面(重要)
  5. 计算机专业买win,新买的电脑是win10系统,有的人却费尽心思重装成win7,为什么呢...
  6. 面试官 | 如何优雅的设计Java 异常?
  7. ubuntu18下pyspider的安装
  8. outlook常见错误分析指南
  9. Expert 诊断优化系列------------------你的CPU高么?
  10. TinyPNG批量智能图片压缩器无限制版(支持Mac/Win)
  11. 数据库中的二维表—巧借Excel
  12. python语言包含的错误_Python3十大经典错误及解决办法
  13. 盛会再临,2018 中国大数据技术大会(BDTC)首曝日程及议题
  14. html5竞赛试题,全国大学生英语竞赛试题
  15. 随笔---为什么一到选课时教务系统就卡顿甚至登不上去
  16. C#对Dictionary的按Value排序
  17. 伤害世界怎么自建服务器,伤害世界服务器怎么建 伤害世界服务器架设教程攻略...
  18. J9数字科普:Web3.0世界中的J9NFT:仍在发展但未来可期
  19. python 路径格式化_吐血整理!140种Python标准库、第三方库和外部工具都有了!...
  20. 【Python_笔记】openpyxl中Workbook()和.load_workbook()区别

热门文章

  1. 利用 XML 实现 BASE64 编码和解码
  2. 六自由度机器人(机械臂)运动学建模及运动规划系列(五)——避障路径规划
  3. 华为鸿蒙系统概念图,华为Mate40Pro概念图:超高屏占比+鸿蒙系统 这才是真正的华为...
  4. 互联网公司各个岗位的薪资对比
  5. erp故障处理流程图_完整ERP流程图
  6. 计算机组成与体系结构 LRU 算法与 MRU 算法对比
  7. KEIL中USB Microlib作用
  8. 算法:非负数组中两个数相与的最大结果
  9. [npm]npm包删除善后
  10. 【人事】面试仪表你必须要注意