2022年armuClinux嵌入式标准系统开发

上传人:资**** 文档编号:269181152 上传时间:2022-03-22 格式:DOCX 页数:13 大小:96.33KB
返回 下载 相关 举报
2022年armuClinux嵌入式标准系统开发_第1页
第1页 / 共13页
2022年armuClinux嵌入式标准系统开发_第2页
第2页 / 共13页
2022年armuClinux嵌入式标准系统开发_第3页
第3页 / 共13页
2022年armuClinux嵌入式标准系统开发_第4页
第4页 / 共13页
2022年armuClinux嵌入式标准系统开发_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《2022年armuClinux嵌入式标准系统开发》由会员分享,可在线阅读,更多相关《2022年armuClinux嵌入式标准系统开发(13页珍藏版)》请在金锄头文库上搜索。

1、精品学习资源基于 arm+uClinux的嵌入式系统的开发前些日子基于 arm uClinux 开发了一个网络监控系统,眼看工程马上要做完了,最终松了一口气, 于是整理了一些笔记和心得想和大家针对这种开发模式进行一些探讨,期望对各位有所帮忙;依据我的开发过程想分以下几部分逐一介绍;1. 开发平台的选择和论证2. 开发环境的建立3. 一般程序的开发4. Linux 程序向 ARM+uClinux平台的移植5. 剩下的问题期望诸位多多补充自己的想法,以利于大家共同提高;1. 开发平台的选择和论证一个工程拿到手, 如何选择开发平台 (主要是指 CPU 和操作系统以及开发环境和工具) 应当说至关重要,

2、有时这不光影响进度,产品质量,可爱惜性等一般问题,甚至涉及到方案的可实现性;本人结合自己的网络监控系统简洁归纳了一些对平台的考虑,仍请各位补充;从系统功能实现考虑:(1) 是否有片上外设,专用指令或配套的软件模块直接实现系统功能要求;感 觉这一条对许多人的决策影响很大(2) 价格这一点应通过 CPU 供应的资源综合考虑,它供应了多少有用的资源,多少没用的资源(那可都是银子呀!),仍是那三个字,性价比,另一方面,是要抓主要冲突,是不是有些特性是必需的, 什么特性是用户需求里的亮点(就靠这些亮点往上抬价),这时该花的就得花了;(3) 功耗本系统对 CPU 功耗要求不高,但对移动设备,这一点可是致命

3、,而且这一点不是仅针对 CPU ,全部几乎器件都要勒紧裤腰带运行;(4) 处理速度这项不用多说,大家都明白重要性,但具体算起来可是一门学问,一方面是自己需要多快的速度, 假如加上非实时操作系统这事就不好把握,余量仍是大点稳妥, 另 一方面, CPU 指令周期多少,有没有流水,有没有并行,什么体系结构,有没有专用指令(看人家DSP 多牛,干这事一绝),对外部储备器和外设的存取速度等等,哪一个慢了都叫瓶颈;欢迎下载精品学习资源(5) 需要的硬件支持(如外部储备器,双电源等)这算是杂项,但会增加额外的价格,系统体积等,不容忽视;从开发者的角度考虑:(1) 是否有足够的技术支持包括demo 版及原理图

4、, demo 程序,操作系统和BSP ,测试开发工具等;(2) 自身条件;包括对工程开发周期的要求,开发人员对器件和开发模式的熟识程度以及把握的难易程度;(3) 可用资源是否丰富(书籍,网络等) 以上三点主要考虑快速开发出稳固的系统;(4) 系统的可继承性,可移植性和可扩展性;(5) 是否有现货;(6) 方案供应商的素养;(包括技术水平和服务意识);依据以上考虑选择了s3c4510b ( ARM7TDMI) uClinux开发模式(1) 以下是该平台对我的系统的中意情形:(和上面几点对应) 本监控系统硬件部分主要要求以下部分:a. 以太网接口( s3c4510b自带网络把握器)b. 串口 (自

5、带)c. 与数据采集芯片的接口(8 位数据线,小于 8 位地址总线);(自带) 本系统软件部分主要要求以下部分:a. 硬件接口驱动程序(uClinux供应串口和网络把握器驱动)b. 网络协议栈支持( uClinux 供应 TCPIP , UDP 等的协议栈)c. 应用层程序(假如算上可以从linux 移植的程序来看,那就太多了,我就用到了一个现成的)(2) 本应用系统不是那种批量的东西,对价格要求不苛刻,而且这款CPU 最廉价可以到 55 左右 ,可以接受;(3) 本应用系统有固定电源,功耗要求不高;当然,据说ARM 在节省功耗上很有特点;(4) 本应用系统速度方面要中意两方面:1;串口: 1

6、15200bps 2;网络速度能到 10Mbps就行,所以对系统速度要求也不高;这款ARM 内部可以到 50M ;(5) 系统对体积要求也不高,加片 flash 和 RAM 仍是没问题 (到目前为止感觉我的系统真是无欲无求!)从开发者的角度考虑:1欢迎下载精品学习资源由于时间很紧(一个半月),所以支持越多越好;目前从开发商那里拿到了开发板,原理图, uClinux ,相应驱动, bootloader ,拿来就可以用了; 软件硬件并行开发; ( bootloader和网络把握器驱动没供应原码,比较惋惜:((2) 当时我对嵌入式系统的开发模式和ARM 都是只有耳闻, linux 接触过一个月左右;

7、现在想起来有些后怕;(3) 网上的资源,特殊多;供应一些我常用的;http:/www.uclinux.org/;uClinux的大本营;http:/www.ucdot.org/;里面有些技术文章特殊不错;br ;这是国产的 linux 站点;uclinux-devuclinux.org这是 uClinux 的邮件列表, 回答疑题的都是大牛, 特殊有帮忙, 记住把你的邮件设置成纯文本格式;申请是在:http:/mailman.uclinux.org/mailman/listinfo/uclinux-dev;web 方式;(4) 接受以上开发模式,软件的可爱惜性,可移植性和可扩展性都不错;(5)

8、目前该 CPU 使用仍是比较普遍,现货没问题;(6) 方案供应商的素养吗 . 仍算可以吧 :-依据以上考虑和目前的开发情形,这套方案仍是比较令人中意;今日先回家了,下回介绍具体开发步鄹吧;2. 开发环境的建立;先说两句废话为和我以前一样对操作系统(特殊是嵌入式操作系统)困惑的弟兄说明些概念;由于总是有人在问是不是确定要用操作系统,我的CPU 能不能移植操作系统,可以移植什么操作系统,有了操作系统可不行以运行某些程序;从我的个人经受来讲,这其实就是许多硬件出身的弟兄对操作系统这个东西有神奇感(和我一年前一样);说白了,操作系统就是一段设计特殊神奇的程序,和你自己的程序从本质讲没有区分,于是,以上

9、问题转为,我是不是确定要用这段程序,我的CPU 能不能运行这段程序,可以跑什么样的程序;这个程序可以跑,调用这个程序接口的另一个程序 能不能跑!答案也就变得简洁, 操作系统对任何一个CPU 都不是必需的(对嵌入式系统更是如此), 你可以自己编些程序在没有操作系统的PC 裸机上跑( BIOS 就是这样的),像玩 C51 一样,(虽然铺张的让人有些扎心),或者移植UCOS 到上面;另一方面,现代操作系统大欢迎下载精品学习资源多需要一些硬件的支持,(像爱惜模式的实现),反过来说,高端CPU 中特地有针对支持操作系统的体系结构,这样, 许多操作系统的实现是挑剔硬件平台的;其实其它程序也一样,你编的程序

10、使用的片上外设另一CPU 上没有,那这段程序就无法移植了;这就是话粗理不粗;书归正传,仍是聊聊ARM uClinux开发模式下开发环境的建立(其实下面说到的东西不仅 限于这种硬件平台和操作系统)很久以前就在介绍嵌入式系统开发的书上见过“交叉编译环境 ”这词,当时觉得很玄,用了以后才知道,其实就是解决在谁的地盘上用谁的工具编谁的代码问题;编译的最主要的工作就在将你的程序转化成运行该程序的CPU 所能识别的机器代码, 不同的 CPU 有相应的编译器,另一方面;编译器本身也是程序,当然也要在某一个 CPU 平台上运行;于是交叉编译的交叉点就在那个编译器本身是CPU1 上的一个程序,却在为CPU2 编

11、译代码(整个一个吃里扒外!);这么一想,以前用 51 和 dsp 的开发软件(大部分都是 IDE 集成开发环境)开发程序时,都算是交叉编译啦;当然,假如在你的ARM 系统上,操作系统已经正常运行,并且你的资源足够多,你可以把PC 机上运行的 ARM 编译工具移植到 ARM 上,然后全部该系统的应用程序都直接在ARM 系统上编译,这就不算交叉编译,但假如有条件这么作,程序的开发或者移植就便利多了,由于整个开发过程又回到在自己PC 机上编应用程序的那种模式了,那就是在自己的地盘上用自己的编译器编自己 的应用程序;与不使用操作系统的开发模式不同(此处的操作系统特殊指供应了特地的接口函数库的操作系统,

12、目前的 UCOS 就不算),在目标板(就是实现系统的板子)使用操作系统的开发模式下,交叉编译环境中仍需要该对应当操作系统的库;比如uClinux 供应的 uClibc ;此时,开发用的主机上不光要有目标板CPU 所 需的编译工具,仍要有对应操作系统的库,又由于一般库文件仍要在开发机上拿目标CPU 的编译重视新编译一下,所以仍要把操作系统的原码也放到开发机上;(唉,跟目标板没什么关系,却要帮它背这么多东西,真是上 辈子欠它的!);虽然操作系统的接口库至关重要,但大家似乎已经忘却了它的存在;这些多是由于大家已经远离了刀耕火种的岁月(需要告知编译器需要的include路 径,lib 路径, 以及 l

13、ib 的名称),集成的编译环境让我们编译链接的全部繁琐工作化作对BUILD 按钮的潇洒一击;而且不论是 windows环境,仍是 linux 环境,都有环境变量去记录这些参数;但尝试将 /usr/lib 目录改一个名字,你就会知道你不能无视他们的存在,由于操作系统的功能都是通过这些库来交给应用层程序使用的;当然假如你的系统不依靠任何操作系统,像最原始的那种完全自己实现全部代码,就只需要一个编译工具,少了这些罗嗦事;以上的东西一般时候是没有必要仔细争辩,但交叉环境下开发或移植比较大的程序时, 你可能就需要明白编译器,链接器等开发工具的几乎全部重要参数;我在开发时,主机完全使用的是linux ,假

14、如有条件,建议大家这样作,linux 的使用没有想象的复杂(虽然我现在身边仍要放一本关于linux 使用的 书籍),而且开发程序可以欢迎下载精品学习资源先在主机上调通, 然后用交叉编译工具为目标系统重新编译一遍,可以这样做是由于主机是linux ,目标系统跑 uClinux ,两 个操作系统供应的应用程序接口几乎是一样的,所以程序几乎不用修改;在我的系统上,建立基本的开发环境过程如下;1安装 gnu 开发工具链(是 GNU 开发的针对 ARMCPU 的一组编译开发程序(是linux 程序);包括 arm elf gcc , arm elf ld 等2将 uClinux源代码源代码解压到相应路径

15、下,依据编译内核的步鄹编译一遍(此时使用的编译工具已经是上面提到的ARM 编译工具了,由于它要在ARMCPU 上运行,另外,和编译linux 内核一样,此时可以通过menuconfig来对内核供应的功能进行裁减3将库( uClibc )解压到相应路径下,用以上工具编译一遍;这样最基本的环境就算搭建好了;以上工作对于做过的人来说比较简洁,这里介绍一下帮忙没有使用或刚开头使用这种开发模式的弟兄们理清一下思路;3. 应用程序的开发由于目标板上用uClinux ,它供应的程序接口和linux 下的基本一样, 不一样的部分主要在于 uClinux不支持 MMU (应当说是 uClinux 是 为不带 MMU 的 cpu 定制的),最明显的就是 fork 函数要用 vfork 函

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号