当前位置:文档之家› 嵌入式基础教程

嵌入式基础教程

本文由cnnet_code贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
第 4 章 ARM系统硬件设计基础 ARM系统硬件设计基础
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
主要内容
1
ADS 1.2集成开发环境简介 集成开发环境简介
2 基于ARM的汇编语言程序设计 基于ARM ARM的汇编语言程序设计 3 基于ARM的硬件启动程序 基于ARM ARM的硬件启动程序 4 5
基于ARM的 基于ARM的C语言与汇编语言混 ARM 合编程
印制电路板制作简介
2
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
4.1 ADS 1.2集成开发环境简介
ADS的英文全称为 Suite, ADS的英文全称为 ARM Developer Suite, ARM公司推出的新一代ARM集成开发工具 公司推出的新一代ARM集成开发工具。 是ARM公司推出的新一代ARM集成开发工具。 ADS由六个部分组成,分别是: ADS由六个部分组成,分别是: 由六个部分组成 代码生成工具 集成开发环境 调试器 指令集模拟器 ARM开发包 ARM开发包 ARM应用库 ARM应用库
3
4.1.1 ADS 1.2集成开发环境下工程的创建
使用ADS创建工程的步骤 使用ADS创建工程的步骤 : ADS File|New…” 新建工程 “File|New 设置目标及其参数 “Edit|Debug Settings…” Settings Files” 向工程中添加文件 “Project|Add Files
4.1.2 ADS1.2集成开发环境下进行仿真和调试的方法 集成开发环境下进行仿真和调试的方法
在Codewarrior中,工程编译成功,将产生一个后缀 Codewarrior中 工程编译成功, axf的映像文件 可以使用AXD Debugger进行调试 的映像文件, 进行调试。 为.axf的映像文件,可以使用AXD Debugger进行调试。 常用调试按钮
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
主要内容
1 ADS 1.2集成开发环境简介 集成开发环境简介 2 基于 基于ARM的汇编语言程序设计 的汇编语言程序设计 基于ARM的硬件启动程序 的硬件启动程序 3 基于 4 5 基于ARM的C语言与汇编语言混 的 语言与汇编语言混 基于 合编程
印制电路板制作简介
6
4.2.1 ARM汇编器支持的伪指令
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
伪指令是一些特殊指令助记符, 伪指令是一些特殊指令助记符,与指令系统的 助记符不同,没有相对应的操作码, 助记符不同,没有相对应的操作码,它们所完成 的操作称为伪操作。 的操作称为伪操作。 作用是为完成汇编程序做各种准备工作的, 作用是为完成汇编程序做各种准备工作的,这 些伪指令仅在汇编过程中起作用,一旦汇编结束, 些伪指令仅在汇编过程中起作用,一旦汇编结束, 伪指令的使命就完成了。 伪指令

的使命就完成了。 包括:符号定义伪指令、数据定义伪指令、 包括:符号定义伪指令、数据定义伪指令、汇编 控制伪指令、宏指令以及其他伪指令。 控制伪指令、宏指令以及其他伪指令。
7
分类 符 号 定义 数 据 定义 汇 编 控制 宏 指 令 其他
指令
GBLA/GBLL/GBLS/LCLA/ LCLL/LCLS/SETA/SETL/S ETS/RLIST DCB/DCW/DCD/ DCFD/ DCFS/DCQ/ SPACE/ MAP/ FIELD IF/ELSE/ENDIF/ WHILE/WEND/
举例
GBLA Test1
;定义一个名为 定义一个名为Test1的全局数值字变量 定义一个名为 的全局数值字变量
str DCB “This is a test”
;分配起始地址为 的一段连续字节存储单 分配起始地址为str的一段连续字节存储单 分配起始地址为 元存放字符串
MACRO/MEND/ MEXIT
IF Test=TRUE ;如果条件成立 = 如果条件成立 指令序列1 执行指令序列 执行指令序列1 指令序列 ;执行指令序列 ELSE ;否则执行指令序列 否则执行指令序列2 否则执行指令序列 指令序列2 指令序列 ENDIF MACRO Seg 指令序列 MEND ;定义一个名为 的宏指令 定义一个名为Seg的宏指令 定义一个名为
AREA Init,CODE,READONLY,ALIGN=3 ;定义了一个代码段 , 段名为 定义了一个代码段, 定义了一个代码段 段名为Init, 属性为 , 3 ) 字节对 只读,并指定其后的指令为8( 只读 , 并指定其后的指令为 (2 齐。
AREA/ALIGN/CODE16/COD E32/ENTRY/END/EQU/EXPO RT/GLOBAL/IMPORT/EXTE RN/GET/INCLUDE/INCBIN
4.2.2 基于ARM的汇编语言语句格式
ARM汇编语言的语句格式 ARM汇编语言的语句格式 标号] [指令或伪指令 [;注释 指令或伪指令] 注释] [标号] [指令或伪指令] [;注释]
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
标号代表地址,必须顶格写,后不加冒号; 标号代表地址,必须顶格写,后不加冒号; 所有指令均不能顶格写。 所有指令均不能顶格写。 标识符的大小写敏感, 标识符的大小写敏感,标号及指令字母大小写 一致。 一致。 ARM指令 伪指令、 指令、 ARM 指令 、 伪指令 、 寄存器名等可以全部大写 或者小写,但不能大小写混合使用。 或者小写,但不能大小写混合使用。 长指令使用反斜杠字符“ 长指令使用反斜杠字符 “ \ ” 将其分成几行书 写。 每行从第一个分号开始到本行结束为注释内容。 每行从第一个分号开始到本行结束为注释内容。
9
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
4.2.3 ARM汇编语言程序的基本结构
汇编语言程序以段为单位组织代码。 汇编语言程序以段为单位组织代码。段是相对 独立的指令或数据序列,有特定的名称。 独立的指令或数据序列,有特定的名称。 代码段内容为执行代码, 代码段内容为执行

代码,数据段存放代码运行 时所需的数据。 时所需的数据。 可执行映像文件通常由以下几部分构成: 可执行映像文件通常由以下几部分构成: 一个或多个代码段,只读属性。 一个或多个代码段,只读属性。 零或多个包含初始化数据数据段,可读写。 零或多个包含初始化数据数据段,可读写。 零或多个不包含初始化数据数据段,可读写。 零或多个不包含初始化数据数据段, 可读写 。
10
一个含有子程序调用的代码段的例子
Init,CODE, AREA Init,CODE,READONLY ENTRY FF5000 LDR R0, =0x3FF5000 LDR R1, 0x0f STR R1, [R0] [R0 LDR R0, =0x3F50008 LDR R1, 0x1 [R0 STR R1, [R0] BL PROC ;子程序调用 … PROC ;子程序开始 … MOV PC,LR ;从子程序返回 … END
一个数据段的例子
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
ALIGN=2 AREA DataArea, DATA, NOINIT, ALIGN=2 DISPBUF SPACE 200 RCVBUF SPACE 200 …
其中DATA为数据段的标识。 其中DATA为数据段的标识。 DATA为数据段的标识
12
4.2.4 基于ARM的汇编语言程序举例
举例:连续发送128个ASCII字符汇编语言的例子 举例:连续发送128个ASCII字符汇编语言的例子 128 b UART UART ldr r0, ldr r1, str r1, ldr r0, ldr r1, str r1, ldr r0, ldr r1, str r1, ;子程序开始 =GPHCON;设置GPIO(RxD ,TxD0引脚) GPIO(RxD0 =GPHCON;设置GPIO(RxD0,TxD0引脚) afaaa;UART0 为功能引脚; =0x2afaaa;UART0\1为功能引脚; [r0 [r0] =GPHUP =0x7ff [r0 GPH[10 10: [r0] ; ;GPH[10:0]禁止上拉 =UFCON0 禁用FIFO =UFCON0 ;禁用FIFO =0x0 [r0] [r0
=UMCON0 禁用AFC ldr r0, =UMCON0 ;禁用AFC UMCON0 ]=0 ldr r1, =0x0; UMCON0[4]=0 [r0 str r1, [r0] =ULCON0 ldr r0, =ULCON0 ;设置线寄存器 正常模式, ldr r1, =0x3 ;正常模式,无奇偶校 一个停止位, 验,一个停止位,8个数据位 [r0 str r1, [r0] =UCON0 设置Uart Uart0 ldr r0, =UCON0 ;设置Uart0控制器 RX边沿触发 TX电平触 边沿触发, ldr r1, =0x245 ;RX 边沿触发 , TX 电平触 禁用延时中断,使用RX 错误中断, 发,禁用延时中断,使用RX 错误中断, 正常操作模式, ;正常操作模式,中断请求或表决模式
str r1, ldr r0, ldr r1, 115200) / 115200) str r1, mov r1,
[r0 [r0] =UBRDIV0 设置波特率为115200 =UBRDIV0 ;设置波特率为115200 int(50700000 = 0x 1a ;int(50700000 / 16 1 = 26 [r0 [r0] #100
Delay subs r1, r1, #0x1 bne Delay //开中断 ;//开中断 ldr r0, =INTMSK [r0 ldr r1, [r0] and r1, r1, #0xefffffff [r0 str r1, [r0] MOV R5 , #127 ;设置要打印的字符的个数 MOV R1 , #0x0 ;设置要打印的字符
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
LOOP =UTRSTAT0 LDR R3 , =UTRSTAT0 [R3 LDR R2 , [R3] ,#0 TST R2 ,#0x04 ;判断发送缓冲区是否为空 为空则执行下边的语句, BEQ LOOP ;为空则执行下边的语句,不 为空则跳转到LOOP 为空则跳转到LOOP

=UTXH0 LDR R0 , =UTXH0 ,[R0 STR R1 ,[R0];向数据缓冲区放置发送数据 ADD R1, R1, #1 ,R5 计数器减1 SUB R5 ,R5, #0x01 ;计数器减1 ,#0 CMP R5 ,#0x0 BNE LOOP
17
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
主要内容
1 ADS 1.2集成开发环境简介 集成开发环境简介 2 基于 基于ARM的汇编语言程序设计 的汇编语言程序设计 基于ARM的硬件启动程序 的硬件启动程序 3 基于 4 5 基于ARM的C语言与汇编语言混 的 语言与汇编语言混 基于 合编程
印制电路板制作简介
18
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
4.3 基于ARM的硬件启动程序
硬件启动程序的工作一般包括: 硬件启动程序的工作一般包括: (1 ) (2 ) (3 ) (4 ) (5 ) (6 ) (7 ) 分配中断向量表 初始化存储器系统 初始化各工作模式下的堆栈 初始化有特殊要求的硬件模块 初始化用户程序的执行环境 切换处理器的工作模式 呼叫主应用程序
19
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
(1) 分配中断向量表 ARM要求中断向量表必须 ARM 要求中断向量表必须 放 置 在 从 0 x0 地址 开 始 的 AREA Init ,CODE, 连续32个字节空间内。 32个字节空间内 连续32个字节空间内。 READONLY
中断 复位 未定义 软件中断 预取中止 数据中止 保留 IRQ FIQ 地址 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C
中断向量表的程序通常如下所示: 中断向量表的程序通常如下所示:
ENTRY;整个程序入口地址 ENTRY;整个程序入口地址 B ResetHandler B UndefHandler B SWIHandler B PreAbortHandler B DataAbortHandler B. B IRQHandler B FIQHandler 20
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
(2) 初始化存储器系统
初始化操作包括:存储器类型、存储器容量、 初始化操作包括 : 存储器类型 、 存储器容量 、 时序以及总线宽度等的配置。 时序以及总线宽度等的配置。 Flash和SRAM静态存储器类型 静态存储器类型, Flash和SRAM静态存储器类型,可合用同一个 存储器端口; 存储器端口; DRAM因为有动态刷新和地址线复用等特性 因为有动态刷新和地址线复用等特性, DRAM 因为有动态刷新和地址线复用等特性 , 常配有专用的存储器端口; 常配有专用的存储器端口; 网络芯片相关的存储器配置以及外接大容量 存储卡的配置也在这里进行。 存储卡的配置也在这里进行。
21
(3) 初始化各工作模式下的堆栈
种运行状态SP独立。 SP独立 ARM 7种运行状态SP独立。需要对用到的每一种模 式下的SP定义一个堆栈地址。 SP定义一个堆栈地址 式下的SP定义一个堆栈地址。 定义方法:改变状态寄存器内的状态位, 定义方法:改变状态寄

存器内的状态位,使处理器 ;预定义处理器模式常量 USERMODE EQU 0x10 FIQMODE EQU 0x11 IRQMODE EQU 0x12 SVCMODE EQU 0x13 ABORTMODE EQU 0x17 UNDEFMODE EQU 0x1b SYSMODE EQU 0x1f xc0 NOINT EQU 0xc0;屏蔽中断位 MODEMASK EQU 0x1f;
切换到不同的状态,然后给SP赋值。 切换到不同的状态,然后给SP赋值。 SP赋值
InitStacks mrs r0,cpsr bic r0,r0,#MODEMASK orr r1,r0,#UNDEFMODE|NOINT ;//未定义模式堆栈 msr cpsr_cxsf,r1 ;//未定义模式堆栈 ldr sp,=UndefStack orr r1,r0,#ABORTMODE|NOINT ;//中止模式堆栈 msr cpsr_cxsf,r1 ;//中止模式堆栈 ldr sp,=AbortStack orr r1,r0,#IRQMODE|NOINT msr cpsr_cxsf,r1 ;//中断模式堆栈 ;//中断模式堆栈 ldr sp,=IRQStack orr r1,r0,#FIQMODE|NOINT ;//快速中断模式堆栈 msr cpsr_cxsf,r1 ;//快速中断模式堆栈 ldr sp,=FIQStack
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
bic orr msr ldr mov LTORG
r0,r0,#MODEMASK|NOINT r1,r0,#SVCMODE ;//管理模式堆栈 cpsr_cxsf,r1 ;//管理模式堆栈 sp,=SVCStack pc,lr
24
; CPU在不同工作模式的对应的堆栈区。 在不同工作模式的对应的堆栈区。 在不同工作模式的对应的堆栈区 _STACK_BASEADDRESS是栈区基地址 为0x33ff8000 是栈区基地址:为 是栈区基地址 UserStack EQU (_STACK_BASEADDRESS0x3800) ;0x33ff4800 ~ SVCStack EQU (_STACK_BASEADDRESS0x2800) ;0x33ff5800 ~ UndefStack EQU (_STACK_BASEADDRESS0x2400) ;0x33ff5c00 ~ AbortStack EQU (_STACK_BASEADDRESS0x2000) ;0x33ff6000 ~ IRQStack EQU (_STACK_BASEADDRESS0x1000) ;0x33ff7000 ~ FIQStack EQU (_STACK_BASEADDRESS0x0) ;0x33ff8000 ~
(4) 初始化有特殊要求的硬件模块
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
这一部分的设置工作根据具体的系统和用 户需求而定。 户需求而定。一般外设初始化可以在系统初始 化之后进行。比较典型的硬件模块有LED LED、 化之后进行。比较典型的硬件模块有LED、时 钟模块、看门狗模块等。 钟模块、看门狗模块等。
26
(5) 初始化用户程序的执行环境
可执行程序映像的结构: 可执行程序映像的结构:
ZI(初始化为0的可读写数据) ZI(初始化为0的可读写数据) 初始化为 RW(可读写数据) RW(可读写数据) RO(代码和只读数据) RO(代码和只读数据)
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
只定义变量名全局变量 定义带初始值全局变量 编译结果
27
ROM中RW初始数据复制到 中 初始数据复制到RAM中,当RAM 初始数据复制到 中 目的地址到|Image$$ZI$$Base|后,对ZI区清零。 区清零。 目的地址到 后 区清零
,=|Image$$RO$$Limit|; RW数据在ROM起始地址 $$RO$$Limit| 数据在ROM LDR r0,=|Image$$RO$$Limit|; RW数据在ROM起始地址 ,=|Image$$RW$$ $$RW$$Base| ;RW在RAM里起始地址 RW在RAM里起始地址 LDR r1,=|Image$$RW$$Ba

se| ,=|Image$$ZI$$ $$ZI$$Base| ;ZI在RAM里起始地址 ZI在RAM里起始地址 LDR r3,=|Image$$ZI$$Base| ,r1 CMP r0,r1 ;比较它们是否相等 BEQ %F1 0 CMP r1,r3 ,[r0],#4 LDRCC r2,[r0],#4 ,[r1],#4 STRCC r2,[r1],#4 BCC %B0 ,=|Image$$ZI$$ $$ZI$$Limit| 1 LDR r1,=|Image$$ZI$$Limit| ,#0 MOV r2,#0 ,r1 2 CMP r3,r1 ,[r3],#4 STRCC r2,[r3],#4 BCC %B2
(6) 切换处理器的工作模式
在初始化过程中模式变化过程为: 在初始化过程中模式变化过程为:
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
管理模式- 各种特权模式(堆栈初始化阶段) 管理模式->各种特权模式(堆栈初始化阶段) 用户模式。 ->用户模式。 在最后阶段才能把模式转换到最终应用程序运 行所需的模式用户模式。 用户模式 行所需的模式用户模式。内核级的中断使 能可以考虑在这一步进行。 能可以考虑在这一步进行。
29
(7) 呼叫主应用程序
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
当所有的系统初始化工作完成后, 当所有的系统初始化工作完成后,需要把程序流 程转入主应用程序。 程转入主应用程序。 最简单的一种情况是: 最简单的一种情况是: IMPORT Main B Main ADS环境中 环境中, 在ARM ADS环境中,还另外提供了一套系统 级的呼叫机制 IMPORT __main B __main __main()是编译系统提供的一个函数 是编译系统提供的一个函数, __main() 是编译系统提供的一个函数 , 负责完成 库函数的初始化和初始化应用程序执行环境, 库函数的初始化和初始化应用程序执行环境,最 后自动跳转到main() 函数, main()函数 后自动跳转到 main() 函数 , 此时要求用户主函数 的名字必须是main main。 的名字必须是main。
30
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
主要内容
1 ADS 1.2集成开发环境简介 集成开发环境简介 2 基于 基于ARM的汇编语言程序设计 的汇编语言程序设计 基于ARM的硬件启动程序 的硬件启动程序 3 基于 4 5 基于ARM的C语言与汇编语言混 的 语言与汇编语言混 基于 合编程
印制电路板制作简介
31
4.4.1 C语言与汇编语言混合编程应遵守的规则
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
在C和ARM汇编程序间相互调用时必须遵守ATPCS规则。 ARM汇编程序间相互调用时必须遵守ATPCS规则。 汇编程序间相互调用时必须遵守ATPCS规则 寄存器的使用规则 子程序之间通过r0 r3来传递参数 当参数个数多于4 r0~ 来传递参数, 子程序之间通过r0~r3来传递参数,当参数个数多于4 个时,使用堆栈来传递参数。 个时,使用堆栈来传递参数。 在子程序中,使用r4 r11保存局部变量 r4~ 保存局部变量。 在子程序中,使用r4~

r11保存局部变量。 r12用于保存SP,当子程序返回时使用该寄存器出栈, 用于保存SP r12用于保存SP,当子程序返回时使用该寄存器出栈, 记作IP r13用作堆栈指针 记作SP r14称为链接寄存器 IP。 用作堆栈指针, SP。 称为链接寄存器, 记作IP。r13用作堆栈指针,记作SP。r14称为链接寄存器, 记作LR 该寄存器用于保存子程序的返回地址。r15称为 LR。 记作LR。该寄存器用于保存子程序的返回地址。r15称为 程序计数器,记作PC PC。 程序计数器,记作PC。 堆栈的使用规则 采用满递减类型(FD, Descending), ),即堆栈通过 采用满递减类型(FD,Full Descending),即堆栈通过 减小存储器地址而向下增长, 减小存储器地址而向下增长,堆栈指针指向内含有效数 据项的最低地址。 据项的最低地址。
32
参数的传递规则 整数参数的前4个使用r0 r3传递 r0~ 传递, 整数参数的前4个使用r0~r3传递,其他参数 使用堆栈传递;浮点参数使用编号最小且能够 使用堆栈传递; 满足需要的一组连续的FP FP寄存器传递参数 满足需要的一组连续的FP寄存器传递参数 子程序的返回结果为一个32位整数时, 32位整数时 子程序的返回结果为一个32位整数时,通过 r0返回 返回结果为一个64位整数时,通过r0 返回; 64位整数时 r0返回;返回结果为一个64位整数时,通过r0 r1返回 依此类推。结果为浮点数时, 返回; 和r1返回;依此类推。结果为浮点数时,通过 浮点运算部件的寄存器F0、D0或S0返回 浮点运算部件的寄存器F0、D0或S0返回 F0
4.4.2 汇编程序调用C程序的方法
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
汇编程序调用C程序方法: 汇编程序调用C程序方法: 汇编程序中用IMPORT声明调用C语言函数; IMPORT声明调用 1)汇编程序中用IMPORT声明调用C语言函数; 2)通过BL指令调用C函数。 通过BL指令调用 函数。 BL指令调用C 例如在一个C源文件中定义了如下求和函数: 例如在一个C源文件中定义了如下求和函数: int add(int x,int y){ return(x+y); return(x+y);} 调用add()函数的汇编程序结构如下: add()函数的汇编程序结构如下 调用add()函数的汇编程序结构如下: IMPORT add ;声明要调用的C函数 声明要调用的C … MOV r0,1 MOV r1,2 调用C函数add BL add ;调用C函数add 34
4.4.3 C程序调用汇编程序的方法
C程序调用汇编子程序方法: 程序调用汇编子程序方法: 在汇编程序中用EXPORT声明被调用子程序, EXPORT声明被调用子程序 1)在汇编程序中用EXPORT声明被调用子程序, 表示该子程序将在其他文件中被调用; 表示该子程序将在其他文件中被调用; 中用extern声明调用汇编子程序为外部函数。 extern

声明调用汇编子程序为外部函数 2)在C中用extern声明调用汇编子程序为外部函数。
例如在一个汇编源文件中定义了如下求和函数: 例如在一个汇编源文件中定义了如下求和函数: 声明add add子程序将被外部函数调用 EXPORT add ;声明add子程序将被外部函数调用 … 求和子程序add add ;求和子程序add ,r0,r1 ADD r0,r0,r1 MOV pc,lr … 在一个C程序的main()函数中对add汇编子程序进行了调用: main()函数中对add汇编子程序进行了调用 在一个C程序的main()函数中对add汇编子程序进行了调用: y); //声明add为外部函数 声明add extern int add(int x,int y); //声明add为外部函数 void main(){ int a=1,b=2,c; a=1,b=2,c; c=add(a,b); //调用add子程序 调用add子程序} c=add(a,b); //调用add子程序}
4.4.4 C程序中内嵌汇编语句
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
在 C 语言中内嵌汇编语句可以实现一些高级语言不能实 现或者高级语言不容易实现的功能以及时间紧迫的功能。 现或者高级语言不容易实现的功能以及时间紧迫的功能。 内嵌的汇编器支持大部分ARM指令和Thumb指令, ARM指令和Thumb指令 内嵌的汇编器支持大部分ARM指令和Thumb指令,但是 不支持诸如直接修改PC实现跳转的底层功能, PC实现跳转的底层功能 不支持诸如直接修改PC实现跳转的底层功能,也不能直接 引用C语言中的变量。 引用C语言中的变量。
嵌入式汇编语句在形式上表现为独立定义的函 数体,其语法格式为: 数体,其语法格式为: _ _asm { 指令[ 指令] 指令[;指令] … 指令] [指令] 36 }
4.4.5 基于ARM的C语言与汇编语言混合编程举例 举例:一个向串口不断发送0x55的例子。 举例:一个向串口不断发送0x55的例子。 的例子 启动 … IMPORT Main READONLY; 代码 AREA Init ,CODE, READONLY; ENTRY 的整 … 跳转到Main()函数处的C/C++ Main()函数处的C/C++程序 BL Main ;跳转到Main()函数处的C/C++程序 体框 … END ;标识汇编程序结束 架 C语 言写 的主 函数
..\inc\config. //包含硬件定义的头文件 #include "..\inc\config.h" //包含硬件定义的头文件 data; //定义全局变量 unsigned char data; //定义全局变量 void Main(void){ Target_Init(); //对目标板的硬件初始化 Target_Init(); //对目标板的硬件初始化 Delay(10 10) //延时 Delay(10); //延时 55; //给全局变量赋值 data = 0x55; //给全局变量赋值 while(1 while(1) { Uart_Printf("%x",data); //向串口送数 Uart_Printf("%x",data); //向串口送数 Delay(10 10) Delay(10); } }
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
主要内容
1 ADS 1.2集成开发环境简介 集成开发环境简介 2 基于 基于ARM的汇编语言程序设计 的汇编语言程序设计 基于ARM的硬件启动程序 的硬件

启动程序 3 基于 4 5 基于ARM的C语言与汇编语言混 的 语言与汇编语言混 基于 合编程
印制电路板制作简介
38
4.5.1 印制电路板设计软件——Protel
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
Protel是流行的PCB设计工具之一,大多数PCB生 Protel是流行的PCB设计工具之一,大多数PCB生 是流行的PCB设计工具之一 PCB 产厂家都接受Protel设计格式的PCB文件。 Protel设计格式的PCB文件 产厂家都接受Protel设计格式的PCB文件。Protel 基本上包括以下5大功能: 基本上包括以下5大功能: 原理图设计 PCB设计 PCB设计 自动布线 可编程逻辑器件(PLD) 可编程逻辑器件(PLD)设计 电路仿真器件设计
39
4.5.2 单面板与多层板
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
单 在在板的一面布线,另一面装元件。 在在板的一面布线,另一面装元件。 面 板上规划元件布局→确定元件接点→ 使用接线柱 用导线把接点按电路要求进行连接。 做接点→用导线把接点按电路要求进行连接。 板 双 面 板 多 层 板
为了使用两面的导线,两面间有过孔。 为了使用两面的导线,两面间有过孔。过孔是 PCB上 充满或涂上金属的小洞, 在PCB上,充满或涂上金属的小洞,它可以与 两面的导线相连接。 两面的导线相连接。 在每层板间放进一层绝缘层后压合。 在每层板间放进一层绝缘层后压合。板子的层数就 代表了有几层独立的布线层。在多层板PCB PCB中 代表了有几层独立的布线层。在多层板PCB中,除 了布置信号线的信号层外, 了布置信号线的信号层外,有的层整层都直接连接 地线或电源,我们称之为地线层或电源层。 地线或电源,我们称之为地线层或电源层。
40
4.5.3 印制电路板设计的注意事项
ARM系统硬件设计基础 第4章 ARM系统硬件设计基础
在设计印制电路板时,需要遵循以下设计原则: 在设计印制电路板时,需要遵循以下设计原则: 1. 减少电源带来的噪声 2.元器件布置要合理分区 3.元器件布局及走线方向尽可能合理 4.注意印刷线路板与元器件的高频特性
41

相关主题
文本预览
相关文档 最新文档