《嵌入式原理和设计》实验讲义
- 格式:doc
- 大小:311.50 KB
- 文档页数:18
《嵌入式系统的原理及应用》课程讲义5-8目录第3章嵌入式Linux应用程序开发 (2)3.1 Linux开发环境的建立 (2)3.2 交叉编译器和工程管理器make (3)3.2.1 GNU gcc (3)3.2.2 编写Makefile文件 (9)3.3 嵌入式Linux系统的开发 (15)3.3.1 编写BootLoader (15)3.3.2 嵌入式Linux2.6系统的裁减 (21)3.3.3 根文件系统的裁减 (28)3.4 嵌入式Linux应用程序的开发流程 (30)3.4.1 开发方式 (30)3.4.2 应用程序实例 (33)第5次课:嵌入式Linux应用程序开发(10学时)主要介绍3个方面的内容:(1) Linux开发环境的建立;(2) GNU gcc交叉编译器;(3) Makefile文件书写规则。
第3章嵌入式Linux应用程序开发传统的嵌入式开发环境需要单片机的仿真器,包括C语言、汇编语言、调试工具等的集成开发环境IDE、实时操作系统等。
购买一个仿真器一般要花上千元,购买C编译器或IDE也要花几千元以上,而购买实时操作系统则要花上十万元乃至几十万元。
由于Flash技术的发展,特别是一些CPU可以用JTAG口在背景模式BDM(Back ground Debug Mode)下调试,故仿真器已可以省去。
随着BDM调试工具的标准化,BDM调试工具会变得越来越简单、越来越通用,一些BDM调试工具已经简单到仅仅在PC机并行口和单片机的JTAG接口之间加一道5~3.3V的缓冲,自制BDM调试工具变得越来越容易。
软件方面,Linux下的自由软件GNUgcc可以完成几乎所有知名CPU以及DSP的交叉C编译和调试,故IDE可以省去。
至于操作系统,uClinux、RTLinux、μC/OS等源码开放的、免费的嵌入式操作系统也都性能稳定可靠。
因此,全部使用遵循GPL的自由软件开发嵌入式应用无疑是一种不错的选择。
嵌入式系统设计的原理与实践随着科技的不断进步和人们对智能化的追求,嵌入式系统在现代社会中越来越普遍。
嵌入式系统指的是嵌入到其他设备中以完成特定功能的计算机系统,它具有体积小、成本低、功耗低等优点,市场需求也越来越大。
嵌入式系统的设计离不开硬件和软件两个方面的技术支持,这篇文章将从原理与实践两个层面进行讲解。
原理部分1. 嵌入式系统设计的基本构成嵌入式系统的基本构成由主控芯片、存储器、输入输出接口和其他外围电路部分组成。
主控芯片是整个系统最重要的组成部分,它的主要任务是处理外部输入的数据,完成一定的计算或控制操作,并将其结果输出到外部。
存储器由 ROM、RAM、Flash 等构成,它们存储了系统自带的固件、数据以及程序运行时所需的变量等。
输入输出接口就是将外部的人机交互接口、各种传感器或输出设备等与主控芯片连接起来,实现数据的输入输出以及外设的控制等功能。
其他外围电路则是根据设计需求加以扩展。
2. 嵌入式系统的设计原则在设计嵌入式系统时,需遵循以下原则:(1)系统可靠性嵌入式系统一般是用于工业控制、医疗、交通、军事等重要场合,其工作环境恶劣,因此系统的可靠性是非常重要的。
这意味着在设计中要注意各种可能的故障情况,并考虑相应的应对措施,如电源掉电、电磁干扰、线路故障以及软件出错等。
(2)效率和性能现代嵌入式系统不仅要求实现各种功能,还要保证效率和性能,包括系统的运行速度、占用内存、能耗等方面。
这要求设计时需要充分考虑硬件与软件协同优化,选择合适的处理器、存储器和各种输入输出接口,同时采用流畅高效的算法和程序进行开发。
(3)灵活性和可扩展性嵌入式系统的设计需要考虑系统的灵活性和可扩展性,包括对不同的传感器、输入输出设备、通信接口等的兼容性,以及可能需要新增的功能。
(4)成本控制由于嵌入式系统配备较简单,较小的存储容量和比较低的计算能力,它的成本比一般电脑甚至智能手机低得多。
但与此同时,设计者需要系统地审慎选择单个部件和总体的设计方案以保持总体成本在可接受的范围内。
《嵌入式系统的原理及应用》课程讲义3目录2.4 ARM基本寻址方式 (2)2.4.1 寄存器寻址 (2)2.4.2 立即数寻址 (2)2.4.3 寄存器偏移寻址 (2)2.4.4 间接寻址 (3)2.4.5 基址寻址 (3)2.4.6 多寄存器寻址 (4)2.4.7 堆栈寻址 (4)2.4.8 块拷贝寻址 (4)2.4.9 相对寻址 (5)2.5 ARM指令集 (5)2.5.1 ARM指令的基本格式 (6)2.5.2 ARM指令详解 (7)2.6 ARM汇编和C语言程序设计 (7)2.6.1 汇编语言源程序格式 (7)2.6.2 汇编语言与C语言混合编程技术 (14)2.6.3 Linux下的ARM汇编 (15)2.6.4 程序优化与性能测试 (15)第3次课:ARM体系结构3主要内容:(4) ARM基本寻址方式(5) ARM指令集(6) ARM汇编程序设计2.4 ARM基本寻址方式ARM有9种寻址方式,分别为:2.4.1 寄存器寻址操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。
寄存器寻址指令举例如下:MOV R1,R2 ;读取R2的值SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0中2.4.2 立即数寻址立即寻址指令中的操作码字段后面的地址码部分即是操作数本身。
也就是说,数据就包含在指令当中。
立即寻址指令举例如下:SUBS R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位MOV R0,#0xFF000 ;将立即数0xFF000装入R0寄存器立即数要以“#”号为前缀,16进制数值时以“0x”表示。
2.4.3 寄存器偏移寻址寄存器偏移寻址是ARM指令集特有的寻址方式。
当第2个操作数是寄存器偏移方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。
寄存器偏移寻址指令举例如下:MOV R0,R2,LSL #3 ;R2的值左移3位,结果放人R0ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,与R1相“与”,结果放入R1可采用的移位操作如下:各种移位操作如图所示,LSL为逻辑左移,LSR为逻辑右移,ASR为算术右移,ROR为循环右移,RRX为带扩展的循环右移1位。
《嵌入式系统的原理及应用》课程讲义目录2.7 S3C2410 ARM微处理器简介 (2)2.7.1 内部结构 (3)2.7.2 S3C2410A 的启动 (7)2.7.3 存储器控制器 (7)2.7.4 Nand Flash控制器 (10)2.7.5 时钟和电源管理 (11)2.7.6 输入/输出口 (12)2.7.7 中断 (13)2.7.8 异步串行口UART (17)第4次课:S3C2410 ARM微处理器主要介绍4个方面的内容:(1) 内部结构(2) S3C2410A 的启动(3) 存储器控制器(4) Nand Flash控制器(5) 时钟和电源管理(6) 输入/输出口(7) 中断(8) 异步串行口UART2.7 S3C2410 ARM微处理器简介Samsung 公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。
采用272 脚FBGA 封装,内含一个ARM920T 内核。
为了降低整个系统的成本,S3C2410A 提供了以下丰富的片内外围:★1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示器);★SDRAM控制器;★3个通道的UART;★4个通道的DMA;★4个具有PWM功能的计时器和1个内部时钟;★8通道的10位ADC;★触摸屏接口;★I2C总线接口;★1个USB主机接口,1个USB设备接口;★2个SPI接口;★SD接口和MMC卡接口;★117位通用I/O口和24位外部中断源;S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。
它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。
同样它还采用了一种叫做Advanced Microcontroller Bus Architecture(AMBA)新型总线结构。
S3C2410A的显著特性是它的CPU核心,是一个由Advanced RISC Machines(ARM)有限公司设计的16/32位ARM920T RISC 处理器。
实验指导书(实验)课程名称:基于STM32的嵌入式系统设计实验实验一电路板焊接与调试-•实验简介完成实验板上部分兀件的焊接,焊接完成后进行基本测试。
实验目的及原理掌握STM32F103实验板的基本原理,掌握焊接电路板的基本技能,掌握下载测试程序的基本方法。
原理:详细内容参考教材《基于STM32的嵌入式系统原理与设计》MCU和周边电路如图为MCU及其周边电路。
图1 MCU及其周边电路1. 唤醒电路,高有效,不按时接220K 电阻下拉。
2. 复位电路,低有效。
带RC 启动复位。
3. 配置启动,用跳线选择B00T1和BOOTO 接高电平或低电平。
4. 高速晶振电路,采用8M 晶振,在STM32内部倍频为72M 。
5. AD 参考电路,采用LC 滤波,可跳线选择直接接VCC 或通过TL431稳压电路产生的参考电压。
6. 后备电池。
可通过跳线选择直接接VCC 或电池。
7. AD 输入,可选择使用RC 滤波,共8路。
&低速晶振电路,选用32. 768kHz 晶振,为产生准确的串口波特率。
USB 转串口电路USB 转串口电路可以方便没有串口的笔记本电脑用户通过USB 接口下载代码到FLASH 中,及进行RS232串行通信。
USB 转串口芯片是CP2102,该芯片稳定性较好。
当其正常工作的时候,灯LED6亮。
该 芯片DP/D+引脚连MINI USB 接口的脚3, DM/D-引脚连MINI USB 接口的脚2,为一对USB 输入输出线。
TXD 与 RXD 引脚接 MCU 的 PA10 (USART1_RX)和 PA9 (USART1_TX)。
I2C 接口电路Jusbm USB图2 USB 转串口接口电路14NCNCNCNCNCNCNCONS.LO(一XE- (一ON 二 N (INHdsfls 二N 二一二乂ON本书选择的EEPROM 是AT24C02是256字节的电可擦出PROM,通过I2C 协议与STM32 进行通信,连接十分简单。
《嵌入式原理和设计》实验讲义实验一嵌入式系统开发环境实验 (1)实验二cortex-M3常用汇编语言实验 (5)实验三硬件开发实验一(LCDDemo) (10)实验四硬件开发实验二(TIM1Demo) (11)实验五硬件开发实验三(ADCDemo) (12)实验六硬件开发实验四(USARTDemo) (14)实验一嵌入式系统开发环境实验一、实验目的或实验原理1.熟悉RealView MDK集成开发环境和IAR集成开发环境的使用方法。
2.熟悉嵌入式系统软件设计方法和流程。
二、实验内容1. 通过例程熟悉、掌握嵌入式系统的编辑、编译、调试、下载及运行过程。
2. 建立自己的工程文件,在调试万利电子EK-STM3210B评估板上调试程序。
三、实验主要仪器设备及材料PC机、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B 评估板。
四、实验步骤1. 打开电脑桌面“嵌入式”文件夹,点击实验1,出现如下两个文件夹:STM32_LCD_DEMO_EW ARM、STM32_LCD_DEMO_RMDK分别为在IAR和MDK开发环境下的EK-STM3210B评估板LCD显示实验。
点击STM32_LCD_DEMO_RMDK文件夹,出现以下文件夹:其中Library文件夹包含以下两个文件夹,分别对应固件库头文件和固件库源文件,“固件库”的概念在后面授课环节中会讲授。
其中project文件夹包含如下文件信息。
其中lcd.c、lcd.h、main.c都是本例子专属的程序:main.c是主程序,lcd.c是液晶屏的驱动程序,lcd.h是液晶屏的头文件;stm32f10x_conf.h 是配置评估板主控CM3芯片STM32F103外围模块的头文件,stm32f10x_it.c是中断处理函数的源文件,stm32f10x_it.h是中断处理函数的原型。
点击RVMDK文件夹,出现如下文件信息:其中Project.Uv2是工程文件,采用MDK打开,注意打开选择程序如下图所示:cortexm3_macro.s是CM3的指令封皮(Instruction wrappers),stm32f10x_vector.s是处理器启动代码(很重要)。
打开工程,按照keil的使用方法使用MDK,运行程序,得到调试效果。
使用MDK的注意事项:⏹注意各文件的层级结构,建议遵循这样的文件结构。
⏹实验室MDK的版本为3.50版,如在自己电脑上安装,应按照“嵌入式\EW ARM&RMDK使用\ ST-LINKII设置指南.PDF”说明来设置。
⏹MDK的具体使用细节可以参考教材20章、“电子版资料\教材电子版\STM32系列微控制器原理与实践电子书\第05章STM32系列微控制器开发工具与应用.pdf”中相应的说明、或参考《基于MDK的STM32处理器开发应用》和《ARM开发工具RealView MDK使用入门》(作者均为武汉理工大学李宁)。
⏹个人使用经验,需特别注意下图中的Include Paths,为C程序的“Include”文件所在的路径,此设置很重要。
如工程按照实验的文件结构设置,不要随便修改。
3. 按上述使用MDK的步骤依次了解STM32_LCD_DEMO_EW ARM文件夹下的文件层次结构,\STM32_LCD_DEMO_EW ARM\project\EWARM下的LCDDemo.eww为IAR工程,双击可打开,运行程序,得到调试效果。
使用IAR的注意事项:⏹IAR的使用环境与MDK不同,需用较多时间熟练。
⏹IAR的设置较MDK多,且复杂,需要多练习,设置可参考“电子版资料\教材电子版\STM32系列微控制器原理与实践电子书\第05章STM32系列微控制器开发工具与应用.pdf”和“嵌入式\EWARM&RMDK使用\ IAR EWARM快速入门万利电子版.pdf”和“嵌入式\EW ARM&RMDK使用\IAR EW ARM快速用户指南.pdf”⏹IAR的具体使用细节可以参考《IAR EWARM V5嵌入式系统应用编程与开发》(作者徐爱钧)。
⏹个人使用经验,需特别注意下图中的Additional include directories,为C程序的“Include”文件所在的路径,此设置很重要。
如工程按照实验的文件结构设置,不要随便修改。
4. 根据2、3步骤,建立自己的工程项目,熟悉工程的建立、调试等步骤。
5. 学会使用Source Insight 3.5对复杂工程进行文本查找,编辑。
学会使用Beyond Compare 3对复杂工程进行文本的异同比对。
以上两个软件位于\嵌入式\相关软件。
实验二cortex-M3常用汇编语言实验一、实验目的或实验原理1.掌握RealView MDK集成开发环境和IAR集成开发环境的使用方法。
2.练习cortex-M3的常用汇编指令。
二、实验内容1.熟悉位带操作。
2.熟悉常用的cortex-M3汇编指令。
三、实验主要仪器设备及材料PC机、RealView MDK集成开发环境、IAR集成开发环境。
四、实验步骤1. 打开电脑桌面嵌入式\实验2\project\RVMDK\ Project.Uv2。
2. 在stm32f10x_vector.s文件中输入汇编代码,选择如下模式,进入调试环境,观察程序运行的效果。
3.需要调试运行的功能包括:特殊功能寄存器的访问包括xPSR、PRIMASK、FAULTMASK、BASEPRI、CONTROL寄存器的访问Ps:xPSR是状态寄存器,是读不出,写不进的。
⏹特权级的切换、双堆栈的切换从特权级切换到用户级、从MSP切换到PSP调试完成后,由指导教师记录操作分。
五、思考题为什么本实验的程序指针PC的值从以下的“0x08000008”开始运行,而不是如51单片机从“0x00”开始运行。
可参考嵌入式\电子版资料\stm32手册\ stm32f103cn.pdf的存储器P19的视图。
;******************** (C) COPYRIGHT 2007 STMicroelectronics********************;* File Name : stm32f10x_vector.s 改编的汇编验证程序;* Author : 朱敏杰;* Version : V1.0;* Date : 26/03/2010;* Description :Stack_Size EQU 0x00000400;注意,此处定义了Stack的大小AREA STACK, NOINIT, READWRITE, ALIGN=3;定义栈,可初始为0,8字节对齐Stack_Mem SPACE Stack_Size;分配0x200个连续字节,并初始化为0 注意在memory窗口观察__initial_sp;汇编代码地址标号PRESERVE8 ;指定当前文件堆栈8字节对齐THUMB ;告诉汇编器下面是32为的Thumb指令,;如果需要汇编器将插入位以保证对齐AREA RESET, DA TA, READONL Y;定义复位向量段,只读EXPORT __Vectors ;定义一个可以在其他文件中使用的全局标号。
此处表示中断地址__VectorsDCD __initial_sp ;给__initial_sp分配4字节32位的地址DCD Reset_Handler ;给标号Reset Handler分配地址为08000008;在这里要问问为什么AREA |.text|, CODE, READONL Y ;代码段定义Reset_HandlerEXPORT Reset_Handler;CONTROL[0]=1;此处可开始写入自己的汇编代码;MOV R0,#1234;MOV R0,R1LDR R4,=0X22000008MOV R6,#1LDR R5,=0X22000004MOV R1,#1STR R1,[R4]STR R6,[R5]mov r1,#0LDR R7,=0X22000008LDR R1,[R7]END;此处结束自己的汇编代码;请注意,此时为特权级线程模式,使用MSP ;特殊功能寄存器的读写MOV R0,#0X00000001MSR PRIMASK,R0MOV R1,#0XFFFFFFFFADDS R0,R1;MSR XPSR,R0MOV R3,#0X00000004MOV R3,#0X00000000MSR XPSR,R3;以上为自己调试的源代码MOV R0,#55MOV R1,#44CMP R0,R1CMP R0,#0X12CMN R0,R1CMN R0,#0X12TST R0,R1TST R0,#0X12TEQ R0,R1TEQ R0,#0X12LABAL B LABALEND实验三硬件开发实验一(LCDDemo)一、实验目的或实验原理1.熟悉在IAR集成开发环境下对STM32的GPIO端口的控制。
2.理解在IAR集成开发环境下的LCD显示。
二、实验内容1.练习对GPIO端口的配置及初始化。
2.练习驱动LCD显示。
三、实验主要仪器设备及材料PC机、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B评估版。
四、实验步骤1. 对照嵌入式\电子版资料\stm32手册\stm32f103cn.pdf文档查阅万利电子EK-STM3210B评估版主控芯片STM32F103的引脚表。
4. 分析main.C文件中的void Button_Config(void)、void Led_Config(void)、void Led_RW_ON(void)、void Led_RW_OFF(void)等程序,理解STM32下对GPIO端口的配置及初始化。
5. 分析stm32f10x_it.c代码中的中断服务程序。
特别是void EXTI3_IRQHandler(void)、void EXTI4_IRQHandler(void)、void TIM2_IRQHandler(void)。
在中断服务程序中设置断点,进行调试。
实验四硬件开发实验二(TIM1Demo)一、实验目的或实验原理1.熟练在IAR集成开发环境下对STM32的GPIO端口的控制。
2. 掌握在IAR集成开发环境下对STM32的定时器控制。
二、实验内容1.练习配置和初始化定时器。
2.使用定时器产生两路不同占空比的PWM信号。
三、实验主要仪器设备及材料PC机、双踪示波器、RealView MDK集成开发环境、IAR集成开发环境、万利电子EK-STM3210B评估版。
四、实验步骤1. 对照嵌入式\电子版资料\stm32手册\stm32f103cn.pdf文档查阅万利电子EK-STM3210B评估版主控芯片STM32F103的引脚表。