Timewe TM
Wap浏览器
高级搜索

uClinux操作系统移植 - 无线搜索技术 - 无线搜索论坛 自由!开放!专门研究与交流无线搜索(移动搜索/手机搜索/WAP搜索/短信搜索/语音搜索/手机客户端软件搜索/实名/寻址) - Powered by Discuz!

排名

无线搜索论坛
注册 登录 搜索 标签 帮助
无线搜索论坛 无线搜索技术 uClinux操作系统移植
上一主题 下一主题
发新话题
发新话题 发布投票 发布商品 发布悬赏 发布活动 发布辩论 发布视频
打印 uClinux操作系统移植
NapolLee


少校Rank: 10Rank: 10
个人空间 发短消息 加为好友 当前离线
1#大 中小 发表于 2008-1-13 12:30 只看该作者
uClinux操作系统移植
(复旦大学电子工程系沈沙,欢迎转载,转载时请保留此行作者信息)
l uClinux简介
l 硬件体系结构简介
l 编译环境和编译工具。
l uClinux启动过程
l 系统源码的修改
1. uClinux简介
uClinux这个英文单词中u表示Micro,小的意思,C表示Control,控制的意思,所以uClinux就是Micro-Control-Linux,字面上的理解就是"针对微控制领域而设计的Linux系统"。
uclinux是一个源码开放的操作系统,面向没有MMU(Memory Management Unit)的硬件平台。它是linux的一个变种,主要的区别在于两者的内存管理机制和进程调度管理机制,同时为了适应嵌入式应用的需求,它的采用了romfs文件系统,并对linux上的c语言库glibc做了简化。
2. 硬件体系结构简介
运行uClinux的硬件平台主要包括如下几个部分:cpu(ARMv4指令集兼容)、uart、memory controller、定时器、flash存储器,sdram存储器,中断控制器和DMA。
3. 编译环境和编译工具。
uclinux操作系统源码绝大部分是用c语言开发的,有一些与硬件直接相关的代码则用特定于某一CPU体系结构的汇编来实现。这些源码只能用GNU的gcc编译工具来进行编译、链接。
GNU gcc可以运行于Linux/Unix操作系统上。如果要在Windows平台上运行gcc,则必须安装Cygwin。Cygwin可以在Windows中安装一个linux的运行环境,这样就可以在windows下运行原本只能在linux下运行的程序。
为了在PC上编译得到运行于目标CPU上的操作系统内核,还必须安装一个合适的交叉编译器。Gcc 提供了现成的针对MIPS、ARM、M68K、Sharc、PowerPC的交叉编译器。如果没有现成的交叉编译器,则需要自行设计。GNU网站提供了一些如何开发新的交叉编译器的文章。开发一个新的编译器,一般需要如下几个步骤:
1、编写机器描述脚本。采用gcc的RTL(Register Tansfer Language)语言描述针对某一CPU体系结构的机器指令与寻址方式、CPU浮点处理方式、endianess、c语言中各种数据类型的位宽、寄存器的个数和使用规则、堆栈和函数调用规则等体系结构的细节。
2、设计代码生成器。Gcc在对c语言源文件进行了词法和语法分析后,将产生一种中间格式文件(intermediate representation)。为了把这种中间格式文件转化为针对具体CPU体系结构的机器码,需要自行设计一个代码生成器。
3、设计汇编器
4、设计链接器
4. uClinux启动过程
uClinux系统的启动可以分为两个步骤:
1. 运行bootloader初始化程序
SRAM、SDRAM等存储设备属于挥发性的存储器,掉电以后其中的内容就会全部丢失,所以必须把操作系统的内核镜像存放在Flash等不挥发性存储介质上。但是操作系统在运行时,需要动态的创建一些如数据段、堆栈、页表(针对使用虚拟地址的操作系统)等内容,所以需要在RAM中运行操作系统。因此,就需要一个引导程序把操作系统的内核镜像从Flash存储器拷贝到RAM中,然后再从RAM中执行操作系统的内核。Bootloader就是可以完成这样一种功能的程序。
从本质上来讲,bootloader不属于操作系统内核。它采用汇编语言编写,因此针对不同的cpu体系结构,这一部分代码不具有可移植性。在移植操作系统时,这部分代码必须加以改写。
具体来讲,bootloader在系统启动时主要完成以下几项工作:
(1) 将操作系统内核从flash拷贝到sdram中,如果是压缩格式的内核,还要将之解压缩。
(2) 改写系统的memory map,原先flash起始地址映射为0地址,这时需要将RAM的起始地址映射为0。
(3) 设置堆栈指针并将bss段清零。将来执行c语言程序和调用子函数时要用到。
(4) 改变pc值,使得cpu开始执行真正的操作系统内核。
2. 运行操作系统内核
bootloader程序执行完上述的各项工作后,通过一条跳转指令,转而执行ini目录下c语言源文件main.c中的函数start_kernel()。因为在此之前bootloader已经创建好一个初始化环境,
c函数可以开始执行了。整个操作系统内核的初始化工作从这里才算是真正开始。这个函数的长度比较短,代码如下:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
asmlinkage void __init start_kernel(void)
{char * command_line;
unsigned long mempages;
extern char saved_command_line[];
/** Interrupts are still disabled. Do necessary setups, then
* enable them
*/lock_kernel();
printk(linux_banner);
setup_arch(&command_line);
printk("Kernel command line: %sn", saved_command_line);
parse_options(command_line);
trap_init();
init_IRQ();
sched_init();
softirq_init();
time_init();
/** HACK ALERT! This is early. We're enabling the console before
* we've done PCI setups etc, and console_init() must be aware of
* this. But we do want output early, in case something goes wrong.
*/console_init();
#ifdef CONFIG_MODULES
init_modules();
#endif
if (prof_shift) {
unsigned int size;
/* only text is profiled */
prof_len = (unsigned long) &_etext - (unsigned long) &_stext;
prof_len >>= prof_shift;
size = prof_len * sizeof(unsigned int) + PAGE_SIZE-1;
prof_buffer = (unsigned int *) alloc_bootmem(size);
}kmem_cache_init();
sti();
calibrate_delay();
#ifdef CONFIG_BLK_DEV_INITRD
if (initrd_start && !initrd_below_start_ok &&
initrd_start < min_low_pfn << PAGE_SHIFT) {
printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - "
"disabling it.n",initrd_start,min_low_pfn << PAGE_SHIFT);
initrd_start = 0;
}#endif
mem_init();
kmem_cache_sizes_init();
pgtable_cache_init();
mempages = num_physpages;
fork_init(mempages);
proc_caches_init();
vfs_caches_init(mempages);
buffer_init(mempages);
page_cache_init(mempages);
#if defined(CONFIG_ARCH_S390)
ccwcache_init();
#endif
signals_init();
#ifdef CONFIG_PROC_FS
proc_root_init();
#endif
#if defined(CONFIG_SYSVIPC)
ipc_init();
#endif
check_bugs();
printk("POSIX conformance testing by UNIFIXn");
/** We count on the initial thread going ok
* Like idlers init is an unlocked kernel thread, which will
* make syscalls (and thus be locked).
*/smp_init();
rest_init();
}///////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////
5. 系统源码的修改
移植一个操作系统到新的硬件平台,比较好的办法是寻找一个架构相近并且已经做好操作系统移植的硬件平台。然后,对原先的操作系统做一定修改。系统源码修改的工作量取决于自行设计的硬件平台与现有的硬件平台之间差异程度。此设计中的硬件平台与三星4510芯片较为接近,并且也可以下载到针对4510b的uclinux系统源码。所以可以从此源码入手,根据我们的硬件平台与4510b的不同之处,在源码中找到相应的文件并加以修改。下面介绍如何修改系统源码。
需要修改的系统源码主要有如下几处:
(1) bootloader相关代码。此代码位于uClinuxlinux-2.4.xarcharmnommubootcompressed目录下名为head.s的文件中。此处程序用汇编语言实现,需要修改的地方主要是设置memory map的代码,与memory controller的硬件实现相关。
(2) UART相关代码。UART相关代码位于uClinuxlinux-2.4.xdriverschar目录下的serial.c
(3) 定时器相关代码。uClinux中有如下函数调用star_kernel()->time_init()->setup_timer(),需要修改setup_timer()函数中的相关代码。
(4) 中断控制器相关。uClinuxlinux-2.4.xarcharmnommuirq.c
除了上述的代码,还有其他多处需要修改。在修改源代码时,可按照uclinux启动和执行顺序依次修改整个平台。熟悉linux内核源码结构对操作系统移植有很大帮助。
QQ
UID793 帖子638 精华9 积分3906 财富12478 贡献1264 威望13 阅读权限10 性别男 来自广东 在线时间126 小时 注册时间2007-10-6 最后登录2008-10-4
查看详细资料
TOP 锤破机器


老兵Rank: 2Rank: 2
个人空间 发短消息 加为好友 当前离线
2#大 中小 发表于 2008-12-22 07:58 只看该作者
冲击式制砂机
制砂机|石头制砂机|碎石制砂机|制沙机|高效制砂机
制砂机|石头制砂机|碎石制砂机|制沙机|高效制砂机|
美女精品图,看美女表演
制砂机(制砂机)简称冲击式破碎机,是我公司引进美国巴马克公司著名的“石打石”破碎机原理及技术,结合国内制砂生产方面的实际情况,研制开发出具有国内、国际、领先水平的高效碎石设备。HX系列冲击式破碎机(制砂机)广泛适用于各种岩石、磨料、耐火材料、水泥熟料、石英石、铁矿石、混凝土骨料等多种硬、脆物料的中碎、细碎(制砂粒)。对建筑用砂、筑路用砂石优为适宜。
制砂机工作特点:(1)结构简单、造价低兼。(2)高效节能、破碎效率高。(3)具有细碎、粗磨功能。(4)通过非破碎物料能力强,受物料水份影响小,含水量可达8%(5)可破碎中硬、特硬物料(如刚玉、烧结铝钒土等)。(6)产品呈立方体,铁污染小
选矿生产线、制砂机、洗沙机、振动筛、制砂生产线
QQ
UID1392 帖子15 精华 积分46 财富160 贡献15 威望0 阅读权限2 性别女 在线时间0 小时 注册时间2008-4-19 最后登录2009-1-1
查看个人网站
查看详细资料
TOP lipio139


列兵Rank: 3
个人空间 发短消息 加为好友 当前离线
3#大 中小 发表于 2008-12-30 20:14 只看该作者
两个叛徒
苏联著名外交家莫洛托夫是一位贵族出身的外交部长,
他很善于在外交场合应付突然发生的情况。
在一次联合国大会上,英国工党的一位外交官向他发难,
说:“你是贵族出身,我家祖辈是矿工,我们两个究竟谁能代
表工人阶级呢?”
莫洛托夫面对挑衅,不慌不忙地说:“你说得对,我出身
贵族,而你出身工人。不过,我们两个都当了叛徒。”
制砂机厂家 小型制砂机 圆锥节能球磨机 干式球磨机价格 格子型球磨机
QQ
UID2185 帖子21 精华 积分64 财富220 贡献21 威望0 阅读权限3 在线时间0 小时 注册时间2008-12-22 最后登录2009-1-9
查看个人网站
查看详细资料
TOP 上一主题 下一主题
发新话题
控制面板首页 编辑个人资料 积分记录 公众用户组 升级个人空间
当前时区 GMT+8, 现在时间是 2009-1-9 17:18 粤ICP备07021541号
清除 Cookies - 联系我们 - 无线搜索论坛 - Archiver - WAP - TOP
Discuz!
Powered by Discuz! 6.0.0 (C) 2001-2007 Comsenz Inc.
内页
内页 内页

直接浏览

提示:以上根据您的指令使用Timewe浏览服务访问的www.wxss.org网站,其内容、服务或立场跟Timewe无关 ...
欢迎举报存在违法、不良信息的网站,净化网络环境

Wap推荐: 极品游戏大作


高级搜索

返回主页 加入Timewe 我的地盘 反馈意见 关于我们 最新动态 联系我们 加入收藏

各主流搜索引擎收录Timewe

免费wap搜索引擎 wap分类网址 wap百强 wap排名 无线周刊 企业搜索 wap浏览器 wap公社
不需下载、不用安装、没有插件,Timewe在线浏览服务助您轻松浏览Wap/WEB/RSS/ATOM/RDF/OPML!

http://timewe.net手机电脑同步服务
(C)2003-2009 Timewe