Embedded 版 (精华区)

发信人: snows (花自飘零水自流), 信区: Embedded
标  题: 长篇连载--arm linux演艺---第五回    
发信站: 哈工大紫丁香 (2004年03月16日12:50:16 星期二), 站内信件

ZZ

长篇连载--arm linux演艺---第五回
-------------------------------------------------------------------------------
-


好,从本节开始,我们走过了bootloader的漫长征途,开始进入linux的内核:
说实话,linux宝典的确高深莫测,洋人花了十几年修炼,各种内功心法层处不穷。有些地
方反复推敲也领悟不了其中奥妙,炼不到第九重啊。。

linux的入口是一段汇编代码,用于基本的硬件设置和建立临时页表,对于
ARM LINUX是 linux/arch/arm/kernle/head-armv.S, 走!

#if defined(CONFIG_MX1)
mov r1, #MACH_TYPE_MX1
#endif

这第一句话好像就让人看不懂,好像葵花宝典开头的八个字:欲练神功。。。。

那来的MACH_TYPE_MX1?其实,在head-armv.S
中的一项重要工作就是设置内核的临时页表,不然mmu开起来也玩不转,但是内核怎么知道
如何映射内存呢?linux的内核将映射到虚地址0xCxxx xxxx处,但他怎么知道把哪一片ram
映射过去呢?

因为不通的系统有不通的内存影像,所以,LINUX约定,内核代码开始的时候,
R1放的是系统目标平台的代号,对于一些常见的,标准的平台,内核已经提供了支持,只?
在编译的时候选中就行了,例如对X86平台,内核是从物理地址1M开始映射的。如果老兄是
自己攒的平台,只好麻烦你自己写了。

小弟拿人钱财,与人消灾,用的是摩托的MX1,只好自己写了,定义了#MACH_TYPE_MX1,当?
,还要写一个描述平台的数据结构:

MACHINE_START(MX1ADS, "Motorola MX1ADS")
MAINTAINER("SPS Motorola")

BOOT_MEM(0x08000000, 0x00200000, 0xf0200000)

FIXUP(mx1ads_fixup)
MAPIO(mx1ads_map_io)
INITIRQ(mx1ads_init_irq)
MACHINE_END

看起来怪怪的,但现在大家只要知道他定义了基本的内存映象:RAM从0x08000000开始,
i/o空间从0x00200000开始,i/o空间映射到虚拟地址空间
0xf0200000开始处。摩托的芯片i/o和内存是统一编址的。
其他的项,在下面的初始化过程中会逐个介绍到。

好了好了,再看下面的指令:


mov r0, #F_BIT | I_BIT | MODE_SVC @ make sure svc mode //设置为SVC模式,允许中?
和快速中断
//此处设定系统的工作状态,arm有7种状态
//每种状态有自己的堆栈

msr cpsr_c, r0 @ and all irqs diabled
bl __lookup_processor_type

//定义处理器相关信息,如value, mask, mmuflags,
//放在proc.info段中
//__lookup_processor_type 取得这些信息,在下面
//__lookup_architecture_type 中用

这一段是查询处理器的种类,大家知道arm有arm7, arm9等类型,如何区分呢?
在arm协处理器中有一个只读寄存器,存放处理器相关信息。__lookup_processor_type将?
回如下的结构:

__arm920_proc_info:
.long 0x41009200 //CPU id
.long 0xff00fff0 //cpu mask
.long 0x00000c1e @ mmuflags
b __arm920_setup
.long cpu_arch_name
.long cpu_elf_name
.long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT
.long cpu_arm920_info
.long arm920_processor_functions


第一项是CPU id,将与协处理器中读出的id作比较,其余的都是与处理器相关的
信息,到下面初始化的过程中自然会用到。。

第五回终。。。 
--
-
 ╭────────────────────────────╮
 │   风萧传瑟声,叶落根深处,青阶入野无归途,他乡不知顾   │
 │   泣下问和谁,叹者行已暮,寒眉傲骨今尚在,奈何入凡土   │
 ╰────────────────────────────╯
                                                                             

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
※ 修改:·snows 於 03月16日12:56:03 修改本文·[FROM: 202.118.229.154]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.147毫秒