学习ARM开发(9)

发布者:BlissfulBliss最新更新时间:2024-11-14 来源: cnblogs关键字:ARM开发  汇编  运行环境 手机看文章 扫描二维码
随时随地手机看文章

上一次把引导的汇编看完,已经准备C的运行环境,下面就开始学习C的源程序,从start.S文件里到跳文件
lib_arm/board.c里运行.
/*
引导程序从汇编start.S里跳到这里执行。
蔡军生 2005/07/19
*/
void start_armboot (void)
{
        /* 声明一个全局指针,它是指向一个数据结构,用于保存参数。
        并且它占用r8寄存器,用它来保存内存地址,达到全局使用目的。
        */
        DECLARE_GLOBAL_DATA_PTR;

        ulong size;
        init_fnc_t **init_fnc_ptr;
        char *s;

#if defined(CONFIG_VFD) || defined(CONFIG_LCD)
        unsigned long addr;
#endif

        /* gd指针可写,因为已经分配一个寄存器给它作为变量。
        这里就相当于把后面算出来的地址保存到r8寄存器.
        */
        gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));

        /* 下面一句是阻止3.4以上版本的GCC进行代码优化,把后面的代码删除掉。 */
        __asm__ __volatile__('': : :'memory');

        /* 清空gd指向的结构 */
        memset ((void*)gd, 0, sizeof (gd_t));

        /*  */
        gd->bd = (bd_t*)((char*)gd - sizeof(bd_t));
        memset (gd->bd, 0, sizeof (bd_t));

        monitor_flash_len = _bss_start - _armboot_start;
这一段准备好保存参数的全局变量区.
后面就是一系列的初始化和获取正确的参数.

关键字:ARM开发  汇编  运行环境 引用地址:学习ARM开发(9)

上一篇:学习ARM开发(10)
下一篇:最后一页

推荐阅读最新更新时间:2024-11-14 11:24

ARM 常用汇编指令
ARM 汇编程序的框架结构 .section .data 初始化的数据 .section.bss 未初始化的数据 .section .text .global _start _start: 汇编代码 注意: 一般是将上面结构进行简化 .text .global _start _start: 汇编代码 寄存器操作指令: 算术和逻辑指令: MOV :用于将一个寄存器或被移位寄存器或一个立即数移动到目的寄存器 MOV r1 ,#8 (注意:#+数,表示一个十进制数,#+0b数,表示一个二进制数,#+0x数,表示一个十六进制数) MVN :对源操作数取反再赋值给目的寄存器 MOV R1,#8
[单片机]
ARM汇编指令集4
协处理器cp15操作指令: mcr & mrc •mrc用于读取CP15中的寄存器 •mcr用于写入CP15中的寄存器 什么是协处理器? •SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务。 •ARM设计上支持多达16个协处理器,但是一般SoC只实现其中的CP15.(cp:coprocessor) •协处理器和MMU、cache、TLB等处理有关,功能上和操作系统的虚拟地址映射、cache管理等有关。 MRC & MCR的使用方法 •mcr{ cond } p15, opcode_1 , Rd , Crn , Crm , { opcode_2 } •opcode_1:对于cp15永远为0 •R
[单片机]
ARM裸机开发bootloader内存初始化
一、从内部看内存 内存由于其访问速度快,访问方式简单成为PC机与嵌入式设备不可缺少的部件。 1、内存的分类 内存分为DRAM和SRAM,其中DRAM又包含SDRAM、DDR、DDR2。 DRAM:它的基本部件是小电容,电容可以再两个极板上保留电荷,但是需要定期的充电(刷新),否则数据就好丢失。缺点:要进行不断的刷新才能保持数据,存取速度较慢。 SRAM:它是一种具有静止存取功能的内存,不需要定期刷新电路就能保持它们内部存储的数据。其优点:存取的速度快;但是缺点是:功耗大,成本高。常用于存储容量不高,但存取速度快的场合,比如stepping stone。 DRAM的分类:在嵌入式系统中,除了CPU内部的垫脚石采用SRAM外,
[单片机]
<font color='red'>ARM</font>裸机<font color='red'>开发</font>bootloader内存初始化
LED的使用纯汇编和C语言的点亮
概述 我们通过观察原理图可以发现LED灯有四个分别连接在GPM4_1, GPM4_2, GPM4_3 GPM4_4上面,这时候我们去查询我们板子4412的说明书,去寻址寄存器的配置 初始化的时候我们需要将他配置为输出模式,同时我们观察下面的电路可以发现,他需要输出低电平,来使led亮 #define GPM4BASE 0x11000000 #define GPM4CON 0x02E0 #define GPM4DAT 0x02E4 #define UDELAY 0x43e2647c #define N 5000000 .text .align 2 .global _start _start: mo
[单片机]
LED的使用纯<font color='red'>汇编</font>和C语言的点亮
影响CPSR状态寄存器的ARM汇编指令总结
最近学习了ARM寄存器寻址方式和ARM指令,现在总结如下: 1、影响CPSR状态寄存器的ARM汇编指令 (1)、带S的指令有 MOVS-- 数据传送指令(只能用在寄存器和寄存器之间) MVNS-- 数据传送指令(和mov区别是,不仅进行数据传输,还进行数据取反) ADDS-- 加法指令 SUBS-- 减法指令 MULS-- 乘法指令 ANDS-- 逻辑与指令(相同是1,不同是0,区别 按位与TST 指令) ORRS-- 逻辑或指令(不同是0,相同是1,区别 按位与TST 指令) BICS-- 设置某一位为1 (2)、另外两个指令 CMP-- 比较指令 TST-- 安位与指令
[单片机]
影响CPSR状态寄存器的<font color='red'>ARM</font><font color='red'>汇编</font>指令总结
学习ARM汇编工具objdump和一个简单实例
1、反汇编的原理&为什么需要反汇编 arm-linux-objdump -D led.elf led_elf.dis objdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf 格式的可执行程序,来反过来得到汇编源代码。 -D表示反汇编。 左边的是ELF的可执行程序(反汇编时候的原材料) 右边的是反汇编生成的反汇编程序。其实就是一个汇编语言。 一般情况下我们写一个源代码 类似于我们WINDOW里面是EXE的格式,PE格式是官方的名字。 2、为什么我们需要进行反汇编,我们要的就是可执行程序。 反汇编的原因有以下: 1、逆向破解 你想盗版的原来的程序,最终得到程序的源代码。 2、调式程序的时候
[单片机]
单片机电子密码锁程序设计(汇编语言)显示*号
制作出来的电子密码锁实物图如下: 电路原理图如下: (1)本设计为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号。 (2)设计开锁密码位六位密码的电子密码锁。 (3)能够LCD显示在密码正确时显示PASSWORD OK,密码错误时显示PASSWORD ERROR,输入密码时显示INPUT PASSWORD。 (4)实现输入密码错误超过限定的三次电子密码锁定。 (5)4×4的矩阵键盘其中包括0-9的数字键和A-F的功能键 (6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。 (7)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。 单
[单片机]
单片机电子密码锁程序设计(<font color='red'>汇编</font>语言)显示*号
基于Proteus的SPI接口的设计与实现
引 言 现在,人们生活中的每个角落都有嵌入式设备的存在,比如DVD、移动电话、MP3及掌上电脑等等。这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件。其中基于ARM核的嵌入式处理器独占鳌头,在32位RISC处理器中占据超过75%的市场份额。因而越来越多的电子爱好者都加入了学习ARM的队伍中。通过和一般单片机系统开发过程的比较不难发现,嵌入式系统的设计包括硬件设计和软件设计两个方面,其调试过程包括软件调试、硬件测试、系统调试3个过程。软件调试一般比较容易进行,但是硬件测试和系统调试则比较麻烦,因为要进行这两个过程必须在 PCB制作、元器件焊接完毕之后才能进行;而PCB的制作、元器件的焊接是非常费时费力的,如果能采用仿真工
[单片机]
基于Proteus的SPI接口的设计与实现
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved