历史上的今天
返回首页

历史上的今天

今天是:2025年02月07日(星期五)

正在发生

2018年02月07日 | 如何将μClinux移植到ARM7体系微处理器S3C4510B上

2018-02-07 来源:eefocus

    Linux是一种支持多种体系结构处理器的操作系统,有很强的移植性。描述了将μClinux移植到基于S3C4510B处理器目标板上的方法与过程。首先介绍了S3C4510B处理器和μClinux,并简单说明了如何搭建移植环境,然后着重讨论了在该开发板上Bootloader的设计实现以及μClinux内核的移植方法,最后对在这种基于μClinux的嵌入式系统环境下如何开发应用程序做了简单说明。


    1引言

    ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以认为是对一微处理器的通称,还可以认为是一种技术的名字。

    1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入我们生活的各个方面。

    采用RISC架构的ARM微处理器一般具有如下特点:体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。ARM的产品主要包括ARM7Thumb家族和ARM9Thumb家族、ARM10Thumb家族以及StrongARM家族。

    2基于ARM的S3C4510B处理器和μClinux

    本文所使用的S3C4510B是Samsung公司使用ARM7处理器内核开发的一块嵌入式微处理器。作为一款高性价比的网络处理器,S3C4510B已广泛应用于各种网络设备中,其中央处理器为ARM7TDMI核。ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为:

    T:支持16位压缩指令集Thumb;

    D:支持片上Debug;

    M:内嵌硬件乘法器(Multiplier);

    I:嵌入式ICE,支持片上断点和调试点。

    ThumbTM16位压缩指令集能以较小的存储空间需求,获得32位的系统性能。S3C4510B处理器包括8kB可配置的一体化Cache/SRAM,1个I2C串行接口,2个UART,2个32位定时器,18个可编程的通用I/O口,以及1个10M/100M以太网控制器。丰富的片内外围极大地简化了系统的设计。同时这款微处理器对操作系统的支持广泛,包括WindowsCE、Linux、PalmOS等μClinux是针对控制领域的嵌入式Linux操作系统,他从Linux2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。适合不具备内存管理单元(MemoryManagementUnit,简称MMU)的微处理器/微控制器,例如ARM7TDMI,他通常具有很少内存或Flash的嵌入式系统。在GNU通用公共许可证(GUNGPL)的保证下,运行μClinux操作系统的用户可以使用几乎所有的LinuxAPI函数,不会因为没有MMU而受到影响。

    3建立μClinux开发环境

    嵌入式系统的开发与一般的应用开发最大的差别在于,前者需要建立特殊的硬件环境,而后者一般基于特定的操作系统或分布式平台。后者的平台已经对硬件或网络媒质做了抽象,从而不需要由系统开发者来完成这些工作。而在嵌入式系统开发中,这也由开发者完成。

    嵌入式系统开发环境一般分成主机端(HOST)和目标板(TARGET)两个部分。主机端是开发平台,用于运行开发过程中的各种工具;目标板是运行和测试平台,是嵌入式系统的最终驻留环境。在主机端和目标板之间需要通过某种方式进行通信,如使用RS232C串口。这种通信的目的在于发送控制指令和传输数据,同时获得反馈信息。图1是系统移植工作的硬件环境。

    主机端的PC使用COM1通过MAX232和S3C4510B的UART1相连接,通过串口完成对目标板的必要控制功能。S3C4510B开发板上配备有一块DM9161以太网卡芯片和主机端建立原始(raw)IP连接,使用链路层地址完成大批量数据的传送。

    硬件环境建立之后,就需要创建软件开发环境。软件环境主要是指ARM体系结构的交叉编译环境,在主机端使用RedHatLinux8.0操作系统,并在其上建立gCC的ARM体系结构的交叉开发环境。可以从http://mac.os.nctu.edu.tw处下载工具链:

    (1)armelfbinutils2.115.i385.rpm

    一些辅助工具,包括objdump(可以反编译二进制文件),as(汇编编译器),ld(连接器)等。

    (2)armelfgcc2.95.32.i386.rpm

    配置目标为arm的GNU的C编译器。使用他在宿主机上开发编译目标上可运行的二进制文件。

    (3)genromfs0.5.11.i386.rpm

    生成Romfs的工具。Romfs是一种文件系统。这种文件系统相对于一般的ext2文件系统要求更少的空间。

    将这3个文件放在宿主机上的任意一个目录下,然后输入下面的命令来安装:

    们就建立好了μClinux的软件开发环境。

    4Bootloader的设计实现

    Bootloader被用于系统从硬件启动到操作系统启动的过渡,是嵌入式系统中必不可少的一段程序。他相当于PC机中的BIOS和OSLoader,用于初始化运行硬件和启动操作系统,因此其实现方式由硬件的特性决定。和BIOS/OSLoader一样,他需要固化在目标板中,每次启动目标板时,首先会运行Bootloader,在他完成CPU和相关硬件的初始化之后,才从事先规定的地址启动操作系统或嵌入式应用的固化程序。

    在嵌入式系统开发过程中,Bootloader还担任了与主机端通信的任务,他相当于一个“服务器”,不断监听从主机端传来的控制信息和数据信息,完成相应的操作。

    当系统上电后,Bootloader从地址0x0开始执行,将存储器映射重新配置,如表1所示,并会执行Linux的固化内核。

    

    Bootloader可以使用ARM仿真软件SDT2.5通过JTAG下载到目标板上。

    5μClinux内核的编译和移植

    作为操作系统的核心,μClinux内核负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统,决定着系统的各种性能。μClinux内核采用模块化的组织结构,通过增减内核模块的方式来增减系统的功能。

 

    内核配置,在产品列表中选择Samsung/4510B。在库的选择上选uC-libc。

    (2)makedep

    寻找依存关系。

    (3)makeclean

    清除以前构造内核时生成的所有目标文件、模块文件和一些临时文件。

    (4)makelib_only

    编译库文件。

    (5)makeuser_only

    编译用户应用程序文件。

    (6)makeromfs

    生成romfs文件系统。

    (7)makeimage

    (8)make

    通过各个目录的makefile文件进行,会在各目录下生成一大堆目标文件。

    上述步骤完成后,就完成了对μClinux源码的编译工作。我们可以在/μClinuxSamsung/images目录下看到2个内核文件:image.ram和image.rom。

    其中iamge.rom可以直接烧写入Flash存储器中,当系统复位或上电时,内核自解压到SDRAM运行。Image.ram可以通过SDT载入到SDRAM中直接运行。

    μCLinux的内核有2种可选的运行方式:可以在Flash上直接运行,也可以加载到RAM中运行。

    Flash运行方式:把内核的可执行映像文件烧到Flash上,系统启动时从Flash的某个地址开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。

    内核加载RAM方式:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快。同时这也是标准Linux系统采用的启动方式。

    6应用程序在μClinux上的开发

    下面将介绍如何把一个应用程序(例如examplec)添加到μClinux上的过程。

    首先进入μClinux-Samsung/user目录并建立一个自己的子目录,如myproject。将examplec复制到myproject目录下,并编写相应的makefile文件。接着进入user目录,增加一行语句到该目录下的makefile文件:

    dir_$(CONFIG_USER_MAAPP_LEDNXY)+=myapp

    切换到目录μClinuxSamsung/config下,打开configin这个文件,并在最后增加类似下面的语句:

    mainmenu_optionnext_comment

    comment'MyApplICation'

    bool'example'CONFIG_USER_MYPROJECT_

    EXAMPLE

    comment'MyApplication

    endmenu

    此后,在编译内核的makemenuconfig时就可以在CustomizeVendor/UserSetting(NEW)这一项的子菜单中选中自己的应用程序example,然后按第5节中相同的办法进行编译即可。

    但是,如果我们每修改一次应用程序,就要把他加入到内核中重新编译,显然效率太低,也不可行。那么有什么方法来节省调试时间呢?

    在上面的章节中曾提到Bootloader可以担当与主机端通信的任务,在这里我们就可以通过他把应用程序快速下载到目标板上。

    首先通过elf2flt这个工具交叉编译example.c生成在μClinux下的可执行文件example(flat格式),命令如下:

    arm-elf-gCC-Wall-o2-wl,elf2flt-oexampleexample.c

    接着将宿主机与目标板通过串口线连接,并在宿主机上启动一个超级终端,例如minicom,选择好一个COM口(通常是串口1),设置波特率为19200,8个数据位、1个停止位,无校验。然后选择传输协议Zmodom,最后选定需要传输的文件example并发送。传输结束后可以通过超级终端在目标板的目录中发现example,这说明传输成功。

    在目标板上将example加上x属性(可执行属性),然后输入命令/example就可以运行此程序了。显然,通过这种方法可以很方便快捷的调试应用程序,等调试结束,再把他加入到内核中一起编译即可。

    7结语

    讨论了如何将μClinux移植到ARM7体系微处理器S3C4510B上的基本流程,同时也简要的介绍了Bootloader以及应用程序的加载和调试方法。在不同的宿主机和目标板环境下,具体移植过程中可能会出现各种不同的错误或问题,可以充分利用GCC这个强大的工具,根据他的错误提示来一步步的进行修正,最终成功的移植μClinux。


推荐阅读

史海拾趣

ATP [ATP Electronics]公司的发展小趣事

ATP深知,优质的产品需要优质的服务来支撑。因此,公司一直致力于提升客户服务水平,为客户提供最优质的产品、最具竞争力的价格和最优质的服务。ATP通过建立完善的售后服务体系,及时解决客户在使用过程中遇到的问题,赢得了客户的信任和好评。同时,公司还积极开展市场调研,了解客户需求,不断优化产品和服务,以满足市场的不断变化。

这五个故事展示了ATP Electronics在电子行业中的发展历程和取得的成就。通过技术创新、推出工业级产品、践行环保理念、实施全球化战略以及提升优质服务,ATP成功地在激烈的市场竞争中脱颖而出,成为了闪存卡市场的领军企业。

CLARE公司的发展小趣事

CLARE公司的创业之路始于对电子行业深厚的技术积累和敏锐的市场洞察力。公司的创始人凭借其深厚的专业知识和经验,准确把握了行业的发展趋势,成功开发了一系列具有竞争力的电子产品。这些产品在市场上获得了良好的反响,为CLARE公司奠定了坚实的技术和市场基础。

AMI Semiconductor公司的发展小趣事

为了进一步拓展市场,CLARE公司积极开拓国内市场,并与多家知名企业建立了战略合作关系。同时,公司还积极进军国际市场,通过参加国际展会、设立海外分支机构等方式,加强与国际客户的交流与合作。这些举措不仅为CLARE公司带来了更多的商业机会,也进一步提升了其在全球电子行业中的地位和影响力。

EUPEC [eupec GmbH]公司的发展小趣事

1999年,EUPEC从西门子独立出来,形成了Infineon(英飞凌)公司。作为Infineon的全资子公司,EUPEC继续专注于电力半导体器件的研发和生产。在这个阶段,EUPEC不断推出创新产品,如IGBT模块、晶闸管、整流二极管等,凭借其卓越的品质和技术,赢得了客户的广泛认可。

EMCORE公司的发展小趣事

EUPEC,全称欧洲电力半导体与电子公司(European Semiconductors and Electronics Company),成立于1990年。它是由西门子和德国另一家大型电器公司AEG生产电力半导体器件的两个部门合并而成。这次合并标志着EUPEC正式进入电力半导体领域,凭借其强大的技术背景和丰富的行业经验,EUPEC迅速在市场中占据了一席之地。

Exclara Inc公司的发展小趣事

在Exclara看来,质量是企业的生命线。公司始终坚持质量至上的原则,从原材料采购到生产过程的每一个环节都严格把关,确保产品质量的稳定性和可靠性。同时,公司还建立了完善的客户服务体系,为客户提供全方位、个性化的服务支持。这种以客户为先的经营理念不仅赢得了客户的信任和支持,也为公司赢得了良好的口碑和声誉。

问答坊 | AI 解惑

据传mega8L现在都10块了,还买不到!

是不是真的? 大家遇到这种情况了么?…

查看全部问答>

USBXpress使用的相关问题?

小弟现在正在用C8051F340实现通过USB和PC机传送数据,对于USBXpress,很多人说有了它开发起来很方便,我安装了之后还是不太明白该怎么用,求高人指点一下,大概的学习过程,不胜感激。…

查看全部问答>

秀一下我的ZIGBEE模块,CC2530不加PA,直视距离700米

这个模块的特点就是的链路预算作到了极致,在野外直视距离可以达到700米。同样的功耗,更远的通讯距离。技术交流QQ群51109148。…

查看全部问答>

有用AQ430的吗?

完全版得近两千啊,如果我用试用版是不是用30天就的重下一次。 iar的workbench到是免费,但编译c语言有4k容量的限制吗?…

查看全部问答>

有多少人用STM32.NET Micro framework?

RT.自己想接触嵌入式很长时间了.感觉uCOS很看不下去 .可能是身边没人带吧..不知道大家都用什么.以前可能自己知识储备也太匮乏.想开始学一个嵌入式系统了...想找些志同道合的朋友一起学.自己太势单力薄.没有环境了…

查看全部问答>

STM32F103 UART4的问题

void USART4_Configuration(void){  USART_InitTypeDef USART_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE  );               U ...…

查看全部问答>

TI样片免费申请参考!

TI的样片申请其实并不难,只要你想用TI的芯片做一些东西,当然你必须事先要了解你要申请的样片,另外就是你必须填写你的真实的信息,好像企业(单位)邮箱比较好申请,另外就是当TI询问你的使用情况,你也必须如实相告你的用途,TI有时打电话给你有 ...…

查看全部问答>

监控视频图像处理问题

我有一段监控视频,现在需要将视频中的车牌号确认出来能办到吗?怎么办到? BMP 352*288 上图是视频的截图 会PS的人能做到吗?这个技术叫什么?以现在的技术能实现我的要求吗? 谢谢…

查看全部问答>