分享

ARM启动

 morgan1 2012-10-31
ARM 的启动过程:
1.设置系统模式,关掉interrupt 和fast interrupt,
2.初始化TCM,分别设置DTCM和ITCM的基址和长度,设置各种工作模式如svc,irq,fiq,abt,undef等的堆栈基址,
3.初始化VFP,
4.初始化MMU,把s-ram,ddr等的大小等告诉mmu,
5.进入__main.
 
注意的事项:
1.启动或reset的时候,要关掉d-cache,和i-cache,
2.retarget, 处理fputc(),fgetc(),backspace(),ferror(),
3.stack heap 实现__user_initial_stackheap(),
4.中断向量表的在进入main之后安排,.
 
__main()作为c语言的入口函数,它主要做了以下工作:
1.把RO,RW从他们的加载域复制到他们的运行域中去(可以用在LINKER中设置RO=,RW=,来确定,也可以用scatter文件来定义),
2.初始化ZI域,
3.跳到__rt_entry.
 
而库函数__rt_entry()会完成以下工作:
1.调用__rt_stackheap_init()设置stack和heap,
2.调用__rt_lib_init()初始化相应的库函数,
3.调用main(),即是我们自己的应用程序了,
4.调用exit()来处理main()函数的返回值.
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多