ARM9S3C2410微处理器与Linux的结合越来越紧密,逐渐在嵌入式领域得到广范的应用。目前,在便携式消费类电子产品、无线设备、汽车、网络、存储产品等都可以看到S3C2410与Linux相结合的身影。
S3C2410微处理器是一款由Samsung公司为手持终端设计的低价格、低功耗、高性能,基于ARM920T核的微处理器。它带有内存管理单元(MMU),采用0.18mm工艺和AMBA新型总线结构,主频可达203MHz。同时,它支持Thumb 16位压缩指令集,从而能以较小的存储空间获得32位的系统性能。
在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛[1]。性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该包括:引导程序、内核与根文件系统三部分。
与Linux2.4内核相比,2.6内核吸收了最新的技术,在性能、可测量性、器件支持和可用性方面有了大幅度提高;支持更多的体系结构、处理器、总线、接口和设备;标准化了内部接口;简化了扩展或添加新设备的步骤等。
本文着重介绍如何制作一个基于linux-2.6.19内核的小型Linux操作系统,并将它移植到S3C24...

>> 阅读全文

本文通过整理之前研发的一个项目(ARM7TDMI + uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各位网友指正,这里提前谢过。本文分以下部分进行介绍: 1. Bootloader及内核解压 2. 内核启动方式介绍 3. 内核启动地址的确定 4. arch/armnommu/kernel/head-armv.S分析 5. start_kernel()函数分析 1. Bootloader及内核解压 Bootloader将内核加载到内存中,设定一些寄存器,然后将控制权交由内核,该过程中,关闭MMU功能。通常,内核都是以压缩的方式存放,如zImage,这里有两种解压方法: 使用内核自解压程序。 arch/arm/boot/compressed/head.S或arch/arm/boot/compressed/head-xxxxx.S arch/arm/boot/compressed/misc.c 在Bootloader中增加解压功能。 使用该方法时内核不需要带有自解压功能,而使用Bootloader中的解压程序代替内核自解压程序。其工作过程与内核自解压过程相似:Bootloader把压缩方式的内核解压到内存中,然后跳转到内核入口处开始执行。 2. 几种内核启动方式介绍 XIP (EXECUTE IN PLACE) 是指直接从存放代码的位置上启动运行。 2.1 ...

>> 阅读全文


Linux暴风雨般地占领了嵌入式系统市场。根据工业分析家分析,大约1/3到1/2的新的32位和64位嵌入式系统设计采用了Linux。嵌入式 Linux 已经在很多应用领域显示出优势,比如SOHO家庭网络和成像/多功能外设,并在以下几方面具备巨大的跨越式发展前景:(NAS/SAN)存储,家庭数字娱乐(HDTV/PVR/DVR/STB)和手持设备/无线设备,特别是数字移动电话。
新的嵌入式Linux应用不会象掌握在智慧和工艺之神-罗神手中那样,会突然从开发者的头脑中爆发出来。大量的项目必须采用数千行的,甚至数百万行的过去的现成代码。成百上千的嵌入式项目已经成功地将其它平台的现成代码移植到Linux之上,比如Wind River VxWorks 和 pSOS, VRTX, Nucleus 和其它RTOS ,这些移植工作现在仍然有价值和现实意义。
到目前为止,大多数的关于移植旧的RTOS应用到嵌入式Linux的文献,已经在关注RTOS 接口(API),任务,调度模式和怎样将他们映射到相应的用户空间去。 在嵌入式程序的密集I/O空间中,同样重要的是,将RTOS的应用硬件接口代码向具有更加规范化模式的Linux设备启动程序的移植。
本文将纵览几种常用的内存映射I/O方法,它们经常出现于旧的嵌入式应用...

>> 阅读全文

uC/OS-II嵌入式操作系统移植
操作系统的移植指的是使实时系统的内核能在微处理器上运行。uC/OS-II应移植到所使用的CPU上,然后才能得到应用。在uC/OS-II的移植中,处理器必须满足一下一些要求:
l 处理器的C编译器能产生可重入型代码
l 处理器支持中断,并且能产生定时中断
l 用C语言就可以开/关中断
l 处理器能支持一定数量的数据存储硬件堆栈
l 处理器有将堆栈指针以及其他CPU寄存器的内容读出,并存储到堆栈或内存中去的指令
实际上,uC/OS-II可以简单地看作是一个多任务调度器,在这个任务调度器上添加了与多任务操作系统相关的一些系统服务,如信号量、邮箱等。其90%的代码是用C语言写的,可以直接移植到有C语言编译器的处理器上。移植主要都集中在多任务切换的实现上,因为这部分代码用来保存和恢复CPU现场(即写/读相关寄存器),不能用C语言,只能使用汇编语言完成,即编写OS_CPU_A.S文件。另外还需要修改与ARM体系结构相关的OS_CPU.H文件和用户规定任务栈初始化结构的OS_CPU_C.C文件。uC/OS-II的移植工作相对来说还是很容易的,具体的移植过程如下:
INCLUDES.H>> 阅读全文

(讲嵌入式移植的一篇非常好的文章,原文出自《基于arm+uClinux的嵌入式系统的开发》,这是节选了其中讲移植的这一段)
不同平台间程序的移植--简单程序的移植
研究程序移植的那两周是最痛苦的两周,没有太多可以借鉴的东西,只能摸黑向前走,于是更加坚定决心要整理些东西给后来的弟兄。不过话说回来,各位弟兄别被我前面说的吓倒,只要搞清你要作什么,程序移植其实是比较简单的事情。 首先列出一些问题: (1) X86上运行的程序能不能在51单片机上运行,为什么,有没有可能,如果可以,应该做哪些工作才可以实现。 (2) 相同CPU平台,DOS的程序为什么可以在windows下运行,能不能在linux下运行,为什么,作什么工作可能实现。 为什么可以移植程序,为什么要移植程序? 程序可以移植首先要感谢开发出高级语言的大牛们,记住,无论多么漂亮的代码经过编译以后都要变成CPU可以识别的机器语言,而几乎一千种CPU说着一千种语言。为保证大家有共同语言,规定一种高级语言――高级语言。每一个CPU派出自己的翻译――编译器。这个翻译精通两国语言,高级语言和自己的语言。(由此已经可以看出编译工具在程序移植中的重要性)。只要程序没有硬件上的约束,可以...

>> 阅读全文

我已经在嵌入式在线BLOG安家了,欢迎你时常过来做客,大家多多交流哦。我会把一些新鲜有趣的东西记录下来一块与你分享。也希望你记住我的BLOG地址,常来逛逛,你可以把“她”添加到你的收藏夹,也可以把“她”复制下来告诉你的朋友们。快来免费注册吧,马上拥有自己的网络家园。发布文章,分享相片,创建个性化的部落,结交嵌入式行业的网友……嵌入你的生活,嵌入你的梦想!我的BLOG地址: http://blog.mcuol.com/webenson

>> 阅读全文