知识大全 精彩arm linux演义

Posted 小弟

篇首语:只有上不去的天,没有过不去的山。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 精彩arm linux演义相关的知识,希望对你有一定的参考价值。

  长篇连载 arm linux演艺 序     滚滚长江东四水 浪花淘净英雄     大家好 许多人和我一样 正在苦读linux源代码 希望有照一日 宝典在手 天下我有 小弟不才 也读了两年 写的几首歪诗 从本级开始 把我所理解的linux如何启动贴出来 不懂之处大家讨论一番 也希望把linux从头到尾讨论一遍 计划写它 回 三年写完(笑 ) 欢迎大家动员一些牛人来参与讨论 提高人气 增加流量     小弟用的是arm T 跑LINUX 下面是第一回     长篇连载 arm linux演艺 第一回        话说 (嘘声 入正题把! )     好好     首先 porting linux的时候要规划内存影像 如小弟的系统有 m SDRAM   地址从 x x bff ffff m flash 地址从 x c x dff ffff   规划如下 bootloader linux kernel rootdisk放在flash里   具体从 x c 开始的第一个 M放bootloader    x c 开始的 m放linux kernel 从 x c 开始都给rootdisk     启动   首先 启动后arm T将地址 x c 映射到 (可通过跳线设置)   实际上从 x c 启动 进入我们的bootloader 但由于flash速度慢   所以bootloader前面有一小段程序把bootloader拷贝到SDRAM 中的 x AFE   再从 x 运行bootloader 我们叫这段小程序为flashloader   flashloader必须要首先初始化SDRAM 不然往那放那些东东      equ SOURCE x C bootloader的存放地址    equ TARGET x AFE 目标地址    equ SDCTL x SDRAM控制器寄存器   // size is stored in location x C FC      global _start   _start: //入口点     //;***************************************   //;* Init SDRAM   //;***************************************     // ;***************   // ;* SDRAM   // ;***************     LDR r =SDCTL //     // ; Set Precharge Command   LDR r = x   //ldr r = x   STR r [r ]     // ; Issue Precharge All Commad   LDR r = x   LDR r [r ]     // ; Set AutoRefresh Command   LDR r = xA   STR r [r ]     // ; Issue AutoRefresh Command   LDR r = x   LDR r [r ]   LDR r [r ]   LDR r [r ]   LDR r [r ]   LDR r [r ]   LDR r [r ]   LDR r [r ]   LDR r [r ]     // ; Set Mode Register   LDR r = xB   STR r [r ]     // ; Issue Mode Register Command   LDR r = x //; Mode Register Value   LDR r [r ]     // ; Set Normal Mode   LDR r = x   STR r [r ]     //;***************************************   //;* End of SDRAM and SyncFlash Init *   //;***************************************     // copy code from FLASH to SRAM     _CopyCodes:   ldr r =SOURCE   ldr r =TARGET   sub r r #   ldr r [r ]     _CopyLoop:   ldr r [r ]   str r [r ]   add r r #   add r r #   sub r r #   teq r #   beq _EndCopy   b _CopyLoop     _EndCopy:   ldr r =TARGET   mov pc r     欲知后事如何 下回分解     长篇连载 arm linux演艺 第二回        上回书说到flashloader把bootloader load到 x AFE 然回跳了过去   其实 x AFE 就是烧在flash x C 中的真正的bootloader:     bootloader 有几个文件组成 先是START s 也是唯一的一个汇编程序 其余的都是C写成的 START s主要初始化堆栈     _start:   ldr r =StackInit   ldr sp [r ]   b main   //此处我们跳到了C代码的main函数 当C代码执行完后 还要调用   //下面的JumpToKernel x跳到LINXU kernel运行      equ StackInitValue __end_data+ x // K __end_data在连结脚本中指定     StackInit:    long StackInitValue      global JumpToKernel     JumpToKernel:   // jump to the copy code (get the arguments right)   mov pc r      global JumpToKernel x   // r = jump address   // r r = arguments to use (these get shifted)   JumpToKernel x:   // jump to the copy code (get the arguments right)   mov r r   mov r r   mov r r   mov r r   mov r r   mov pc r    section data boot    section bss boot     欲知bootloader中的c代码如何运行 请看下集     长篇连载 arm linux演艺 第三回        书接上回     下面让我们看看bootloader的c代码干了些什么 main函数比较长 让我们分段慢慢看     int main()      U *pSource *pDestin count;   U countDown bootOption;   U delayCount;   U fileSize i;   char c;   char *pCmdLine;   char *pMem;     init(); //初始化FLASH控制器和CPU时钟     EUARTinit(); //串口初始化   EUARTputString( \\n\\nDBMX Linux Bootloader ver \\n );   EUARTputString( Copyright (C) Motorola Ltd \\n\\n );   EUARTputString((U *)cmdLine);   EUARTputString( \\n\\n );     EUARTputString( Press any key for alternate boot up options );     小弟的bootloader主要干这么几件事:init(); 初始化硬件 打印一些信息和提供一些操作选项    Program bootloader image    Program kernel image    Program root disk image    Download kernel and boot from RAM    Download kernel and boot with ver x bootloader format    Boot a ver x kernel    Boot with a different mand line     也就是说 可以在bootloader里选择重新下载kernel rootdisk并写入flash   下载的方法是用usb连接 m的rootdisk也就刷的一下 关于usb下载的讨论请参看先前的贴子 为arm开发平台增加usb下载接口   如果不选 直接回车 就开始把整个linux的内核拷贝到SDRAM中运行     列位看官 可能有人要问 在flashloader中不是已经初始化过sdram控制器了吗?怎么init(); 中还要初始化呢 各位有所不知 小弟用的是syncflash   可以直接使用sdram控制器的接口 切记 在flash中运行的代码是不能初始化连接flash的sdram控制器的 不然绝对死掉了 所以 当程序在flash中运行的时候 去初始化sdram 而现在在sdram中运行 可放心大胆地初始化flash了 主要是设定字宽 行列延时 因为缺省都是最大的     另外 如果列位看官的cpu有足够的片内ram 完全可以先把bootloader放在片内ram 干完一切后再跳到LINUX 小弟著也是不得已而为之啊     今天太晚了 回去睡觉了     长篇连载 arm linux演艺 第四回        如果直接输入回车 进入kernel拷贝工作     EUARTputString( Copying kernel from Flash to RAM \\n );   count = x ; // Mbytes   pSource = (U *) x C ;   pDestin = (U *) x ;   do      *(pDestin++) = *(pSource++);   count = ;    while (count > );        EUARTputString( Booting kernel \\n\\n );     这一段没有什么可说的 运行完后kernel就在 x 了 至于为什么要   空出 x 的一段 主要是放kelnel的一些全局数据结构 如内核页表 arm的页目录要有 k大     我们知道 linux内核启动的时候可以传入参数 如在PC上 如果使用LILO   当出现LILO 我们可以输入root=/dev/hda 或mem= M等指定文件系统的设备或内存大小 在嵌入式系统上 参数的传入是要靠bootloader完成的     pMem = (char *) x FF ; //参数字符串的目标存放地址   pCmdLine = (char *)&cmdLine; //定义的静态字符串   while ((*(pMem++)=*(pCm cha138/Article/program/Oracle/201311/16703

相关参考

知识大全 技术分享 把JVM移植到ARM环境中

技术分享把JVM移植到ARM环境中  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   我

知识大全 小白无操作系统基础,想学学arm9,请大神指点哦

小白无操作系统基础,想学学arm9,请大神指点哦有一定单片机基础,学习ARM就不是很困难。困难的就是学习操作系统,驱动,内核之类的这些东西,就需要你下功夫去学了。开发板有很多的,具体看个人偏好了。现在

阿姆氏指标的指标剑法

阿姆氏指标的指标剑法1、上证指数4天ARMS指标的超卖界限为2.4,21天ARMS指标的超卖界限为1.1。2、上证指数4天ARMS指标超买界限的参考价值低,暂时不推荐,21天ARMS指标的超买界限为0

知识大全 同频率下,MIPS架构的CPU与ARM几的CPU效能抗衡,跪求专业人士详细回答

同频率下,MIPS架构的CPU与ARM几的CPU效能抗衡,跪求专业人士详细回答!  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 青梅煮酒论英雄

青梅煮酒论英雄是《三国演义》里最为精彩的内容之一,曹操刘备二人此次双龙会,自然也足以在古代十大酒局中名列三甲。刘备归附曹操后,每日在许昌的府邸里种菜,以为韬晦。用张飞这个粗人的话讲,就是“行小人事”。

知识大全 十大酒局之煮酒论英雄

青梅煮酒论英雄是《三国演义》里最为精彩的内容之一,曹操刘备二人此次双龙会,自然也足以在古代十大酒局中名列三甲。刘备归附曹操后,每日在许昌的府邸里种菜,以为韬晦。用张飞这个粗人的话讲,就是“行小人事”。

知识大全 《三国演义》的心得(字数100)

《三国演义》的心得(字数100)《三国演义》全称《三国志通俗演义》。我国古代历史演义小说的代表作。明代小说家罗贯中依据有关三国的历史、杂记,在广泛吸取民间传说和民间艺人创作成果的基础上,加工、再创作了

知识大全 三国演义里头有哪些故事

三国演义里头有哪些故事?8个!赤壁之战关渡之战三气周瑜七擒孟获草船借箭夷陵之站永安托孤智取汉中三国演义里有哪些故事万事俱备,只欠东风公元208年,曹操率领80万大军驻扎在长江中游的赤壁,企图打败刘备以

知识大全 三国演义读后感400字(四年级)急

三国演义读后感400字(四年级)急!《三国演义》是四大名著之一,为罗贯中所编写。这本书已家喻户晓,但是我初次拿着到这本书,看着看着,被里面的情节、人物深深吸引著,打动着,令我爱不释手。孔明一生铺佐明君

下列哪些典故与《三国演义》无关

下列哪些典故与《三国演义》无关?A、东窗事发B、宝刀不老C、赤膊上阵D、东山再起答案:AD解析:A项,“东窗事发”比喻阴谋暴露。相传北宋末年,金兵南犯,岳飞、李纲等坚持抗金,奸臣秦桧主张投降,就与夫人