当前位置:首页 > 单片机 > 单片机
[导读] 1.简述 针对“如何在以S3C44B0X为核心的ARMSYS开发板上建立uClinux内核移植”的一个总结,其内容包括对Bootloader的功能分析和uClinux2。4。24发行版内核基础上针对S3C44B0X开发板进行修改的重点内容

1.简述

针对“如何在以S3C44B0X为核心的ARMSYS开发板上建立uClinux内核移植”的一个总结,其内容包括对Bootloader的功能分析和uClinux2。4。24发行版内核基础上针对S3C44B0X开发板进行修改的重点内容的逐一列举。

2.Bootloader

2.1Bootloader概述

BootLoader就是在操作系统内核运行之前运行的一段程序。通过这段程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。因此,正确建立uClinux的移植的前提条件是具备一个与uClinux配套、易于使用的Bootloader。

ARMSYS开发板提供了这样一个uClinux专用的Bootloader,该Bootloader程序烧录在系统的地址0x0处,每次上电即运行,能够正确完成硬件系统的初始化和uClinux的引导。

理论上,uClinux引导时并非一定需要一个独立于内核的Bootloader。然而,将Bootloader与内核分开设计能够使软件架构更加清晰,也有助于灵活地支持多种引导方式,实现一些有用的辅助功能。

ARMSYS提供的Bootloader的主要任务可以概括如下:

1.硬件初始化;

2。从主机下载新的内核映像和文件系统映像;

3。烧写NorFlash和Nandflash;

4。加载uClinux内核映像并启动运行;

5。提供串行超级终端上的人机操作界面。

2。2存储空间分布

Bootloader采用默认的存储空间分布地址来加载uClinux内核、文件系统,并按照正确引导uClinux的运行。在ARMSYS的Bootloader中,默认的存储空间分布如下表:

内容起始地址存储介质

Bootloader程序空间0x00000000Flash

压缩内核映像0x00010000Flash

ROM文件系统映像0x000e0000Flash

内核运行地址0x0c008000SDRAM

压缩内核解压地址0x0c100000SDRAM

文件系统加载0x0c700000SDRAM

这个存储空间的分配方式也不是固定不变的,可以通过修改Bootloader中的相关代码来改变。

2。3Bootloader的工作

完整的Bootloader引导流程可描述如下:

硬件初始化阶段一

◎硬件初始化;

◎复制二级中断异常矢量表;

◎初始化各种处理器模式;

◎复制RO和RW,清零ZI(跳转到C代码入口函数)。

硬件初始化阶段二

◎初始化本阶段使用到的硬件设备;

◎建立人机界面;

◎实现映像文件的下载和烧录工具;

◎实现映像文件的加载和运行工具。

下面对上述各步骤进行逐一说明,并对与uClinux相关的内容详细加以说明。

2。3。1硬件初始化

板子上电或复位后,程序从位于地址0x0的ResetExceptionVector处开始执行,因此需要在这里放置Bootloader的第一条指令:bResetHandler,跳转到标号为ResetHandler处进行第一阶段的硬件初始化,主要内容为:关WatchdogTimer,关中断,初始化PLL和时钟,初始化存储器控制器。比较重要的是PLL的输出频率要计算正确,ARMSYS中把它设置为64MHz;这实际上就是处理器的工作主频,这个时间参数在第二阶段计算SDRAM的刷新计数值和UART的波特率等参数时还要用到。

2。3。2建立二级异常中断矢量表

异常中断矢量表(ExceptionVectorTable)是Bootloader与uClinux内核发生联系关键的地方之一。即使uClinux内核已经得到处理器的控制权运行,一旦发生中断,处理器还是会自动跳转到从0x0地址开始的第一级异常中断矢量表中的某个表项(依据于中断类型)处读取指令运行。

在编写Bootloader时,地址0x0处的一级异常中断矢量表只需简单地包含向二级异常中断矢量表的跳转指令就可以。这样,就能够正确地将发生的事件交给uClinux的中断处理程序来处理。对于uClinux内核,它在RAM空间中基地址为0xc000000处建立了自己的二级异常中断矢量表,因此,Bootloader的第一级异常中断矢量表如下所示:

bResetHandler;ResetHandler

ldrpc,=0x0c000004;UndefinedInstructionHandler

ldrpc,=0x0c000008;SOFtwareInterruptHandler

ldrpc,=0x0c00000c;PrefetchAbortHandler

ldrpc,=0x0c000010;DataAbortHandler

b。

ldrpc,=0x0c000018;IRQHandler

ldrpc,=0x0c00001c;FIQHandler

LTORG

如果在Bootloader执行的全过程中都不必响应中断,那么上面的设置已能满足要求。但在我们的ARMSYS上提供了USB下载器,需要用到中断,那么Bootloader必须在同样的地址(0xc000000)处配置自己的二级异常中断矢量表,以便同uClinux兼容。这张表事先存放在FlashMemory里,引导过程中由Bootloader将其复制到RAM地址0x0C000000,存放矢量表:

;IRQ==theprogramputthisphraseto0xc000000

ExceptionHanlderBegin

b。

ldrpc,MyHandleUndef;HandlerUndef

ldrpc,MyHandleSWI;HandlerSWI

ldrpc,MyHandlePabort;HandlerPabort

ldrpc,MyHandLEDabort;HandlerDAbort

b。;HandlerReserved

ldrpc,MyHandleIRQ;HandlerIRQ

ldrpc,MyHandleFIQ;HandlerFIQ

MyHandleUndefDCDHandleUndef;reserveaword(32bit)

MyHandleSWIDCDHandleSWI

MyHandlePabortDCDHandlePabort

MyHandlEDAbortDCDHandleDabort

MyHandleIRQDCDHandleIRQ

MyHandleFIQDCDHandleFIQ

ExceptionHanlderEnd

建立二级矢量表:

;****************************************************

;*SetupIRQhandler*

;****************************************************

ldrr0,=(_IRQ_BASEADDRESS+0x100)

ldrr2,=_IRQ_BASEADDRESS

addr3,r0,#0x100

0

CMPr0,r3

STRCCr2,[r0],#4;cc:Carryclear;saveR2toR0address,R0=R0+4。

BCC%B0

ldrr1,=_IRQ_BASEADDRESS

ldrr0,=ExceptionHanlderBegin;ifthereisn't'subspc,lr,#4'at0x18,0x1c

ldrr3,=ExceptionHanlderEnd

0

CMPr0,r3;putthevectortableat_IRQ_BASEADDRESS(0xc000000)

LDRCCr2,[r0],#4

STRCCr2,[r1],#4

BCC%B0

ldrr1,=DIsrIRQ;puttheIRQjudgeprogramat_IRQ_BASEADDRESS+0x80(0xc000080)

ldrr0,=IsrIRQ;ifthereisn't'subspc,lr,#4'at0x18,0x1c

ldrr3,=IsrIRQEnd

0

CMPr0,r3

LDRCCr2,[r0],#4

STRCCr2,[r1],#4

BCC%B0

ldrr1,=MyHandleIRQ;MyHandleIRQpointtoDIsrIRQ

ldrr0,=ExceptionHanlderBegin

ldrr4,=_IRQ_BASEADDRESS;

subr0,r1,r0

addr0,r0,r4

ldrr1,=DIsrIRQ

strr1,[r0]

定义Handlexxx:

^(_IRQ_BASEADDRESS)

HandleReset#4

HandleUndef#4

HandleSWI#4

HandlePabort#4

HandleDabort#4

HandleReserved#4

HandleIRQ#4

HandleFIQ#4

^(_IRQ_BASEADDRESS+0x80)

DIsrIRQ#4

;IntVectorTable

^(_IRQ_BASEADDRESS+0x100)

HandleADC#4

HandleRTC#4

HandleUTXD1#4

HandleUTXD0#4

HandleSIO#4

HandleIIC#4

HandleURXD1#4

HandleURXD0#4

HandleTIMER5#4

HandleTIMER4#4

HandleTIMER3#4

HandleTIMER2#4

HandleTIMER1#4

HandleTIMER0#4

HandleUERR01#4

HandleWDT#4

HandleBDMA1#4

HandleBDMA0#4

HandleZDMA1#4

HandleZDMA0#4

HandleTICK#4

HandleEINT4567#4

HandleEINT3#4

HandleEINT2#4

HandleEINT1#4

HandleEINT0#4

将异常中断矢量重构到SDRAM,这样的好处就是可以在其它的功能程序内对中断处理程序的地址任意赋值。为此,我们在44b。h文件中定义:

/*ISR*/

#definepISR_RESET(*(unsigned*)(_IRQ_BASEADDRESS+0x0))

#definepISR_UNDEF(*(unsigned*)(_IRQ_BASEADDRESS+0x4))

#definepISR_SWI(*(unsigned*)(_IRQ_BASEADDRESS+0x8))

#definepISR_PABORT(*(unsigned*)(_IRQ_BASEADDRESS+0xc))

#definepISR_DABORT(*(unsigned*)(_IRQ_BASEADDRESS+0x10))

#definepISR_RESERVED(*(unsigned*)(_IRQ_BASEADDRESS+0x14))

#definepISR_IRQ(*(unsigned*)(_IRQ_BASEADDRESS+0x18))

#definepISR_FIQ(*(unsigned*)(_IRQ_BASEADDRESS+0x1c))

#definepISR_ADC(*(unsigned*)(_IRQ_BASEADDRESS+0x100))//0x20))

#definepISR_RTC(*(unsigned*)(_IRQ_BASEADDRESS+0x104))//0x24))

#definepISR_UTXD1(*(unsigned*)(_IRQ_BASEADDRESS+0x108))//0x28))

#definepISR_UTXD0(*(unsigned*)(_IRQ_BASEADDRESS+0x10c))//0x2c))

#definepISR_SIO(*(unsigned*)(_IRQ_BASEADDRESS+0x110))//0x30))

#definepISR_IIC(*(unsigned*)(_IRQ_BASEADDRESS+0x114))//0x34))

#definepISR_URXD1(*(unsigned*)(_IRQ_BASEADDRESS+0x118))//0x38))

#definepISR_URXD0(*(unsigned*)(_IRQ_BASEADDRESS+0x11c))//0x3c))

#definepISR_TIMER5(*(unsig

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将为大家带来Linux内核的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 Linux 内核

以下内容中,小编将对嵌入式linux内核移植实现方案的相关内容进行着重介绍和阐述,希望本文能帮您增进对嵌入式的了解,和小编一起来看看吧。

关键字: 嵌入式 Linux 内核

上海2022年11月29日 /美通社/ -- 2022年11月4日至6日,具有国际影响力的金融科技经纪商ATFX参加且赞助了2023年“爱丁堡公爵杯”预选赛。此次预选赛是在墨西哥金塔纳罗奥州坎昆月亮宫酒店球场(Hotel...

关键字: 内核 进程 TE SE

据业内信息报道,近日半导体封测大厂日月光已从高通公司获得Oryon芯片的封测大单。

关键字: 高通 内核 Oryon 封测 日月光

据业内消息,在近日举办的Snapdragon技术峰会中,高通公司公布了新一代定制ARM内核Oryon。

关键字: 高通公司 ARM 内核 Oryon

北京2022年11月15日 /美通社/ -- "双十一"当天,思享无限正式推出拾遗计划,聚焦非遗文化的传播与传承,将传统文化与直播新的媒介语境相融合,让非遗传承者、非遗爱好者在直播平台上共同参与、共同...

关键字: 互联网 内核 数字化

高德智感推出PT系列红外热像仪新品,内核搭载1280x1024非制冷氧化钒红外探测器,率先拥有百万像素的红外热像仪产品。同时测温精度高达正负1摄氏度,热灵敏度NETD不超过55mK,可辨识微小的热差异,并自动追踪全屏最高...

关键字: 红外热像仪 NET NFC 内核

2022北京马拉松于11月6日开跑。本次北马采用集“数字化注册”、“人脸识别核验”、“AI测温”以及“北京健康宝健康码状态、全程新冠疫苗接种和24小时内核酸检测阴性证明”多验合一的物联网智能终端——声智科技IDA数字哨点...

关键字: 人脸识别 内核 数字化 智能终端

上海2022年11月1日 /美通社/ -- 近日,由上海勃林格殷格翰药业有限公司与华东理工大学药学院合作编写的高等学校通识课精品教材《质量文化导论》正式出版发行。这也是国内首门质量文化课程配套教材。该书的出版有望助力全国...

关键字: 内核 编写

上海, 2022年11月1日 /美通社/ -- 11月1日,坐落于上海市普陀区苏州河畔的艺康大中华区总部新装开启。上海市普陀区副区长肖立、上海第一财经传媒有限公司总经理陈思劼、以及来自普陀区投资促进办公室、长风...

关键字: BSP 内核 研发中心
关闭
关闭