您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > ARM9(裸机版)程序结构
ARM9(裸机版)程序结构32位机的资料很多,但不系统,学习起来不仅不方便,而且云山雾海,难以理解。谈到系统的移植,就更多的不理解了。如何在短时间有效的学好32位机,一定要和8位机工作过程做比较。32位也是一个单片机,其程序结构和单片机是一样的。写程序时要掌握以下几点:一初始化处理器。和8位的单片机一样的要初始化。换句话说就是设置堆栈,初始化变量等等。由于以上的操作均与处理器体系结构和系统配置密切相关,所以一般由汇编来编写,但在你熟练掌握32位机后,完全可以用C来写的。为了能够进行系统初始化,通常采用一个汇编或C文件作启动代码。它可以实现向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O初始化、地址重映射等操作。是芯片复位后进入c语言的main函数前执行的一段代码,主要是为运行c语言程序提供基本运行环境。(与单片机8位的一样,把堆栈、PC指针复位。)启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。(1)系统硬件初始化系统上电或复位后,程序从位于地址0x0的ResetExceptionVector处开始执行,因此需要在这里放置bootloader的第一条指令:bReset,跳转到标号为Reset处进行第一阶段的硬件初始化,主要内容为:关看门狗定时器,关中断,初始化PLL和时钟,初始化存储器系统。执行完以上程序后,系统进行堆栈和存储器的初始化。系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。一般情况下,管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置。如果系统使用了外设,则需要设置相关的寄存器,以确定其刷新频率、总线宽度等信息。(2)代码复制到RAM中运行因为嵌入式系统的代码通常都是固化在ROM或Flash中,上电后开始运行。由于ROM和Flash的读取速度相对较慢,这样无疑会降低代码的执行速度和系统的运行效率。因此,需要把系统的代码复制到RAM中运行。这点和8086是一样的。(3)建立二级中断向量表在ARM系统中,中断向量表位于0x0开始的地址处,意味着无论运行什么样的上层软件,一旦发生中断,程序就得到Flash存储器的中断向量表里去,降低系统的运行效率。因此在RAM中建立自己的二级中断向量表,当中断发生后,程序直接从RAM中取中断向量进入中断子程序。二呼叫主程序。在初始化完成后立即进入主程序即可
本文标题:ARM9(裸机版)程序结构
链接地址:https://www.777doc.com/doc-2898528 .html