- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S3C2410bootloadervivi阅读笔记
建议读一读《嵌入式系统Boot Loader技术内幕》(詹荣开著),google一下就会找到一片。什么是Bootloader就不再这里废话了,看看上面的文章就明了了。 Bootloader有很多种,如本文将要阅读的vivi,除此之外还有uboot,redboot,lilo等等。Vivi 是韩国mizi公司专门为三星s3c2410芯片设计的Bootloader。先来看看vivi的源码树:vivi-+-arch-+-s3c2410|-Documentation|-drivers-+-serial|?????????? ‘-mtd-+-maps|????????????????? |-nor|????????????????? ‘-nand|-include-+-platform|?????????? |-mtd|?????????? ‘-proc|-init|-lib-+-priv_data|-scripts-+-lxdialog|-test|-util可以google一下,搜到源码vivi.tar.gz。前面提到的文件已经系统的分析了bootloader的,这里就按源代码来具体说事。vivi也可以分为2个阶段,阶段1的代码在arch/s3c2410/head.S中,阶段2的代码从init/main.c的main函数开始。
阶段1
阶段1从程序arch/s3c2410/head.S开始,按照head.S的代码执行顺序,一次完成了下面几个任务:1、关WATCH DOG (disable watch dog timer)上电后,WATCH DOG默认是开着的2、禁止所有中断 (disable all interrupts)vivi中不会用到中断,中断是系统的事,bootloader可不能去干这事的(不过这段代码实在多余,上电后中断默认是关闭的)3、初始化系统时钟(initialise system clocks)启动MPLL,FCLK=200MHz,HCLK=100MHz,PCLK=50MHz,“CPU bus mode”改为“Asynchronous bus mode”。4、初始化内存控制寄存器(memsetup)S3c2410共有15个寄存器,在此开始初始化13个寄存器。5、检查是否从掉电模式唤醒(Check if this is a wake-up from sleep)若是,则调用WakeupStart函数进行处理。6、点亮所有LED (All LED on)点一下灯,通知外面的同志,告诉他们有情况发生。7、初始化UART0 (set GPIO for UART InitUART)a.设置GPIO,选择UART0使用的引脚b.初始化UART0,设置工作方式(使用FIFO)、波特率115200 8N1、无流控等。这可是使用串口与s3c2410通信的条件啊,在终端也要如此设置。8、跳到内存测试函数(simple memory test to find some DRAM flaults)当然要定义了CONFIG_BOOTUP_MEMTEST这个参数才会跳到内存测试。9、如果定义了以Nand flash方式启动(#ifdef CONFIG_S3C2410_NAND_BOOT),则此时要将vivi所有代码(包括阶段1和阶段2)从Nand flash复制到SDRAM中(因为在Nand flash中是不能执行程序的,它只能做为程序和数据的存储器,而Nor flash可就不同了,Nor flash可以执行程序,但贵是它发展得瓶颈):a.设置nand flash控制寄存器b.设置堆栈指针c.设置即将调用的函数nand_read_ll的参数:r0=目的地址(SDRAM的地址),r1=源地址(nand flash的地址),r2=复制的长度(以字节为单位)d.调用nand_read_ll进行复制 10、跳到bootloader的阶段2运行,亦即调用init/main.c中的main函数(get read to call C functions)a.重新设置堆栈b.设置main函数的参数c.调用main函数head.S有900多行,都是些arm汇编,看的云山雾罩,汇编看来是忘的差不多了,所以这部分代码也看的相当糙,只知道大概在干什么,至于个中缘由就不是很了解。先学学arm汇编再回来看。
阶段2
从init/main.c中的main函数开始,终于步入C语言的世界了。Main函数总共有8步(8 steps),先看看源代码:int main(int argc, char *argv[]){??????? int ret;?????? /*??
您可能关注的文档
- p16 户外led 大屏验收报告.doc
- P16室外全彩屏报价表.doc
- p2b永生医药药材公司医疗器械质量管理制度.doc
- P2P平台运营报告--含提纲和数据统计表格.doc
- PAC-12使用说明.doc
- PADS笔记【堂堂】.docx
- PASCAL语言_复习题_FXT352064_0901.doc
- PA部工作常见疑难10例.doc
- pbe科室护理管理资料归档规范.doc
- pbl规划《纲要》编制经验总结.doc
- 2016-2017学年高中生物第二单元生态工程与生物安全第1章第2节我国的生态工程教案中图版选修3.doc
- 2022-2023学年小升初英语易错点专练06完形填空15篇(广州教科版专版含答案)2.docx
- 期中专项四年级英语下册(含答案)3.docx
- 期末卷(二)(含答案解析)-2022-2023学年高二历史期中期末复习备考必刷题(选择性必修一国家制度与社会治理).docx
- 第4课欧姆定律的应用第一讲欧姆定律实验探究(原卷版).docx
- Unit1限制性定语从句语法讲义人教版高一英语学生版213.docx
- 2023年宁波市初中毕业升学文化考试科学模拟卷(八).docx
- 5.3细胞呼吸的原理和应用课件高一上学期生物人教版必修12.pptx
- 高中政治更好发挥政府作用教学设计.docx
- 体悟民间故事中的幸福--五上《中国民间故事》导读课.docx
文档评论(0)