学习ARM开发(4)

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

已经把CPU大体架构学会了,当然我之前已经学习过80X86的结构,所以对于像RISC的计算机,也能想像到它是什么样的东西。如果没有学习过《微机原理》,那最好去看看,或者去看看RISC的CPU设计,就是龙芯的设计,在清华上面有很多关于龙芯的设计文档,这些都是CPU的功能。


为什么要学习汇编呢?现在不是大多数用C编写的了吗?是的,目前嵌入式软件大多数都是用C开发的。其实学习汇编,是为了更好了解CPU的处理,这个只是为了了解,为了更深入的了解,而不是用它来开发大部份的应用。当然它也是有用的地方,比如BOOTLOADER这样的程序,没有汇编,是不可能完成的。还有那些有特殊的指令,没有汇编也是不可能写得出来的。目前,我学习汇编,就是为了写BOOTLOADER。我也没有为了全部去学习它,而去学习,而是拿BOOTLOADER的源程序出来,从上面了解汇编,看懂别人的BOOTLOADER,或者能修改它的汇编,就算学习完成,而不必要每条指令都去死记它,去了解它。只要BOOTLOADER中有的指令,才去看它,去了解它,把一个BOOTLOADER看完下来,就相当于把汇编学习完成,而不必要自己动手去新写什么汇编,只要能修改目前已经有的BOOTLOADER,就已经完成了任务。


下一次,接着就去看看U-BOOT的源程序了。当然是基于S3C44B0的BOOTLOADER进行的。

关键字:ARM开发  汇编  C编写 引用地址:学习ARM开发(4)

上一篇:学习ARM开发(6)
下一篇:学习ARM开发(2)

推荐阅读最新更新时间:2026-03-20 11:20

系统学习ARM之五 --C语言和汇编混合编写
转载自http://blog.csdn.net/qqliyunpeng/article/details/48791647 一、GNU汇编书写格式: 代码行中的注释符号: ‘@’ 整行注释符号: ‘#’ 语句分离符号: ‘;’ 直接操作数前缀: ‘#’ 或 ‘$’ 全局标号:标号只能由a~z,A~Z,0~9,“.”,_等(由点、字母、数字、下划线等组成,除局部标号外,不能以数字开头)字符组成,标号的后面加“:”。 段内标号的地址值在汇编时确定; 段外标号的地址值在连接时确定。 局部标号:局部标号 主要在局部范围内使用而且局部标号可以重复出现。它由两部组成开头是一个0-99直接的数字局部标号
[单片机]
一、编写 s3c24x0 的 bootloader——介绍、看门狗及时钟设置
1.1 介绍 1.1.1 bootloader 的作用 bootloader 的终极功能就是为了启动内核。    从上面可以知道最简单的 uboot 编写的步骤: 初始化硬件:关看门狗、设置时钟、设置 SDRAM、初始化 nandflash 如果bootloadre 比较大,要把它重定位到 SDRAM 把内核从 nandflash 读到 SDRAM 设置内核启动参数 跳转执行内核 1.1.2 norflash 启动   norflash 可以像内存那样读,但是不能像内存那样写。    1.1.3 nandflash 启动    1.2 看门狗及时钟设置 1.2.1 看门狗设置 2440 必须在启
[单片机]
一、<font color='red'>编写</font> s3<font color='red'>c</font>24x0 的 bootloader——介绍、看门狗及时钟设置
Linux之ARM(IMX6U)裸机C语言LED驱动实验--驱动编写,编译
简介 在开始部分用汇编来初始化一下 C 语言环境,比如初始化 DDR、设置堆栈指针 SP 等等,当这些工作都做完以后就可以进入 C 语言环境,也就是运行 C 语言代码,一般都是进入 main 函数。所以我们有两部分文件要做: ①、汇编文件 汇编文件只是用来完成 C 语言环境搭建。 ②、C 语言文件 C 语言文件就是完成我们的业务层代码的,其实就是我们实际例程要完成的功能 1.汇编文件初始化C语言运行环境 设置处理器进入 SVC 模式 以前的 ARM 处理器有 7 种运行模型:User、FIQ、IRQ、Supervisor(SVC)、Abort、Undef和 System,其中 User 是非特权模式,其余 6 中都是特
[单片机]
Linux之<font color='red'>ARM</font>(IMX6U)裸机<font color='red'>C</font>语言LED驱动实验--驱动<font color='red'>编写</font>,编译
使用Keil C进行51单片机延时程序编写的几点心得
应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动 DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: 51 单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #09h需要2个极其周期,djnz也需要2个极其周期。那么存在r
[单片机]
使用Keil <font color='red'>C</font>进行51单片机延时程序<font color='red'>编写</font>的几点心得
怎样使用C语言来编写MSP430的高质量代码
简介:微处理器一般用于特定环境和特定用途,出于成本、功耗和体积的考虑,一般都要求尽量节省使用资源,并且,由于微处理器硬件一般都不支持有符号数、浮点数的运算,且运算位有限,因此,分配变量时必须仔细。另外要说明的是,速度和存储器的消耗经常是2个不可兼顾的目标,在多数情况下,编程者必须根据实际情况作出权衡和取舍。 需要注意的事项如下: 1) 通常在满足运算需求的前提下,尽量选择为变量定义字节少的数据类型。 比如最常用的int和char,int是16位的,char是8位的,如果没有必要,不要使用int,而且使用char也最好使用unsigned char。运行时,可以在变量窗口看到,使用类型为unsigned char的变量是
[单片机]
S3C2440下linux按键驱动编写及测试程序
驱动程序tang2440_buttons.c #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include linux/poll.h #include linux/irq.h #include asm/irq.h #include linux/interrupt.h #include asm/uaccess.h #include mach/regs-gpio.h #include mach/hardware.h #include linux/platf
[单片机]
C51单片机程序编写注意事项
1.特殊功能寄存器的操作注意事项 在操作特殊功能寄存器时,要注意其他各位的影响。 例如,TMOD定时器的操作。 它控制定时器0和定时器1,高四位控制定时器1,低四位控制定时器0。当我们用字节操作其内容时,一次赋值就是改变其八位的全部内容,。此时,若定时器0在另一个函数中应用,经过次操作就改变了定时器0的内容,是不允许的。所以,最好用位操作的方式。 例: 字节操作:TMOD = 0x01; 改为: 位操作: TMOD |= 0x01;TMOD &= 0xfd; 2.定时器定时的计算: 要定时NS,那么, NS = T * (NT / TSOC ) NS:N秒,NT:是几T的单片机,例如51是12T的,那么NT =
[单片机]
C51编写单片机延时函数
参考了 51单片机 Keil C 延时程序的简单研究 ,自己也亲身测试和计算了一些已有的延时函数。 这里假定单片机是时钟频率为12MHz,则一个机器周期为:1us. 参考了 51单片机 Keil C 延时程序的简单研究 后,我们可知道, 在Keil C中获得最为准确的延时函数将是 void delay(unsigned char t) { while(--t); } 反汇编代码如下: 执行DJNZ指令需要2个机器周期,RET指令同样需要2个机器周期,根据输入t,在不计算调用delay()所需时间的情况下,具体时间延时如下: t Delay Time (us) 1 2 1+2 =4
[单片机]
用<font color='red'>C</font>51<font color='red'>编写</font>单片机延时函数
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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