ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:74.64KB ,
资源ID:26086803      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26086803.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式.docx

1、嵌入式175705253嵌入式课程安排:ARM体系结构编程 10Linux系统移植 5Linux驱动开发 15项目开发 5智能车 5智能家居 7嵌入式是什么? 计算机: 通用计算机 嵌入式计算机嵌入式产品特点:1)专用性,专用的计算机2)运行环境差异打3)比通用PC计算机资源少4)功耗低,体积小,集成度高,成本低5)具有较长的生命周期能做什么: 形态各异的嵌入式产品,消费类、医疗、交通、工业控制、军工怎么做:1.PC2.不固定,嵌入式硬件平台硬件平台 TPAD-CW210核心板底板(扩展板)CPU三星 S5pv210Datasheet(数据手册):S5PV210_UM_REV1.1.pdf嵌入

2、式:应用为中心计算机技术为基础软硬件可裁剪适用应用系统对功能、可靠性、成本、体积及功耗有严格要求的专用计算机系统发展方向:应用级开发系统开发(移植操作系统、移植硬件驱动)TPAD 核心板S5pv210 1G核心ARM架构cortex-A8ARM7 ARM9 ARM10 ARM11Cortex-ACortex-MCortex-R8颗内存 1GNand Flash 闪存TPAD 底板:拨码开关(四个):决定CPU从什么设备上获得启动程序四种启动方式:Nand Flash(发布阶段)SD卡(发布阶段)USB(开发阶段)UART(串口)(开发阶段)开发模式:主机PC _程_序_ 目标板(TPAD)四种

3、传输模式:USB(发送-接收)UART(发送-接收)网络(发送-接收)JTAG口(发送)为TPAD搭建一个运行环境向Nand Flash烧写一个程序(称之为引导程序(Bootloader)或启动程序)u-boot.bin板子上电,最先执行的是s5pv210内部的irom中的固化程序代码准备工作:1. 把TPAD连接线接好USB线,一头接PC,一头接TPAD OTG口电源线网线,一头接PC,一头接TPAD的网口UART,一头接PC,一头接TPAD的com1口2. 设置拨码开关,设置成USB启动1-ON2-OFF3-OFF4-ON原理:向Nand Flash烧写引导程序(Bootloader)u-

4、boot.bin烧写在Nand Flash的0地址此程序能够为运行裸板程序创建运行环境从PC-TPAD传输启动程序,usb:PC:DNW(负责发送程序)TPAD:irom(接收程序)(irom,只读存储器,irom中的固化代码程序真正的接收发送过来的程序,irom中固化代码功能参考datasheet中关于irom 的说明)一旦运行irom,USB和UART都会被初始化1. 开启TPAD电源2. 在PC机运行DNW软件,tools目录下3. 配置DNW软件1)configure-option配置串口的波特率115200配置使用的串口号com1(无物理串口,需要用USB转串口(9针公口)线,安装驱

5、动,根据PC机设备管理器-硬件-端口内的虚拟串口号 设置串口号) 2)Serial Port- Connectdnw标题有变化:COM1,11520bps4. PC机弹出“发现USB的新硬件” 对话框,要求安装驱动,如果不弹出安装驱动界面,长按拨码开关旁边的白色按键1秒,直到出现对话框 安装tools/usbdrive中驱动 安装完成后 PC机设备管理器-硬件-通用串行总线控制器 中会出现x210,说明安装成功5. 使用DNW通过usb向TPAD发送程序x210_usb.bina) 在configure-option中配置下载地址为0xd0020010b) Usb Port-transmit

6、选择tools-binaryfile-x210_usb.binIROM中的程序会接收自动调用x210_usb.binDNW标题条:6. 使用DNW通过USB发送u-boot.bin1) configure-option中配置下载地址为0x23e000002) Usb Port-transmit 选择tools-binaryfile-u-boot.bin此步注意:一旦选择完成假如成功会出现打印信息,立马按空格键,时间很短此步成功界面会有tarena#7. 将已有的u-boot.bin写入闪存(Flash)1)在tarena#后面输入dnw 20008000界面出现以下信息 OTG cable C

7、onnected!Now, Waiting for DNW to transmit data2)USB Port-transmit 选择tools-binaryfile-u-boot.bin界面出现:Download Done! Download Address: 0x20008000, Download Checksum is being calculated.Checksum O.K.3)nand erase 0x0 0x100000界面出现:NAND erase: device 0 offset 0x0, size 0x100000Erasing at 0x0 - 12complete.

8、Erasing at 0x20000 - 25lete.Erasing at 0x40000 - 37lete.Erasing at 0x60000 - 50lete.Erasing at 0x80000 - 62lete.Erasing at 0xa0000 - 75lete.Erasing at 0xc0000 - 87lete.Erasing at 0xe0000 - 100lete.OK4)nand write 0x20008000 0x0 0x100000界面出现:.1048576 bytes written: OK8. 断电9. 调整拨码开关(Nand Flash启动)1-on2-

9、off3-off4-off10. 重新打开电源(没反应的话按白色键)界面出现以下信息:# JFJKJ BIOS for JFJ210 #This Board: SDRAM is 1024MB; LCD display size is: 800X480show logoHit any key to stop autoboot: 0 Unknown command menu - try help敲击“空格”,进入u-boot.bin的shell下:tarena# 至此我们的运行环境已经建好0xd0020010 x210_usb.bin0x23e00000 u-boot.bin0x20008000

10、u-boot.bin这几个地址都是内存地址0xd0020010 CPU内部的SRAM IRAM0x23e00000 0x20008000 都是外接内存DDRII的地址(s5pv210只能寻址1.5G的外接内存)RAM随机存储器,掉电丢失:SRAM:静态RAM,接通电源以后就能用,不需要动态刷新,SRAM访问速度快,容量小,价格高DRAM:动态RAM接通电源后,需要初始化u-boot.bin 引导程序bootloader1.初始化硬件设备,软化环境2.shell功能3.启动内核Nand erase 擦除命令 nand erase 起始地址 size 如nand erase 0x0 0x10000

11、Nand write 写命令 nand write 写入来源地址 写入的地址 size 如nand write 20008000 0x0 100000安装交叉编译器基于X86平台编译器: GccNmReadelfObjdumpStrip基于ARM平台:VMware-settings-options-share-folder-add-)路径Cd /mnt/hgfs/armCd /optSudo tar jxf /mnt/hgfs/arm/arm-gcc-complier/arm-2009q3.tar.sz2Cd /home/tarenaVi .bashrcPATH=/opt/arm-2009q3

12、/bin:$PATH:. Arm-linux-gcc v 查看是否OK OK的话可以看到版本号4.4.1的gcc编译器ELF32位小端格式文件(必须有操作系统的情况下,才能执行),执行硬件平台是intel80386,linux操作系统,动态链接,使用了动态库Arm-linux-gcc o text-arm test.cELF32ELF32GPIO管脚:是 CPU对外设的接口中最简单的一种接口,通用的IO口,通用的输入输出接口优点:通过对通用的IO口直接设置 就可产生高低电平S5PV210共有237个多功能的输入输出管脚,142个内存接口管脚,同名分为34个通用组IO口,2个内存接口通过原理图Q

13、1给高电平Q1接到CPU的GPC1_3管脚GPC1_3管脚就是CPU中的GPIO管脚CPU的管脚绝大多数都是复用功能如何使得GPC1_3管脚产生高低电平:CPU内部有GPIO控制器,按照对应GPIO管脚的特殊功能寄存器(SFR)的设置去控制GPIO管脚。寄存器: 控制寄存器:配置GPIO管脚的功能 数据寄存器:对应管脚具体的高低电平 输出时: 1 高电平 0 低电平 输入时: 2 高电平 1 低电平 上下拉电阻寄存器:s5pv210集成了上下拉电阻寄存器GPC1CON3设置(12-15位):0000 输入功能0001输出功能0010复用音频功能0011保留0100复用音频功能0101-1110

14、保留1111中断功能GPC1DAT0-4设置:每个bit位对应一个管脚的数据状态,GPC1_3对应bit3,将bit3设置成1,即可输出高电平,设置成0输出第电平总结:s5pv210处理器控制GPC1_3管脚输出高电平或者低电平,具体步骤如下:GPC1_3 Tarena板子1.配置GPC1_3管脚功能为输出口GPC1CON 0xE020008015:12 0001(二进制)2.禁止GPC1_3管脚的内部上下拉电阻GPC1PUD 0xE0200088 7:6为00(二进制)3.通过数据寄存器的相应位来控制对应的关键输出高低电平GPC1DAT 0xE002000843为1,高电平(二进制)3为1,

15、低电平(二进制)1.写完C程序,编译成裸板程序:arm-linux-gcc -march=armv5te -nostdlib -c -o led.o led_c.c-march 指定生成指令的架构(armv5te指定的指令集)-nostdlib指定不使用标准库2.将.o连接成ELF格式的可执行文件:arm-linux-ld -nostartfiles -nostdlib -e led_main -Ttext=0x20008000 -o led led.o-nostartfiles 不链接启动文件-nostdlib 不链接标准库-e指定程序的入口点-Ttext指定代码段的链接地址,代码运行时需要

16、下载到链接地址运行,注:u-boot.bin 需要下载到0x23e00000,就是u-boot.bin文件在链接时指定了链接地址为0x23e000003.将ELF格式的led可执行程序,转换为在裸板上能运行的二进制纯数据,无ELF格式信息arm-linux-objcopy -O binary led led.bin CPU对各种功能部件的管理、控制、监视是采用特殊功能寄存器(SFR special fuction register)的集中控制方法S5PV210的GPIO包含两部分:alive-apart,off-apartalive-apart部分在SleepMode是可以有电源提供的,其寄存

17、器的值可以保持#led.o:led_c.c# $(CC) $(CCFLAGS) -c -o led.o led.c%.o:%.c $(CC) $(CCFLAGS) -c -o $ $%跟*一样 通配符$:表示所有的目标文件$EIATPAD接受数据:EIA-TTL直通串口线:COM1,因为设计原理图时,已经完成交叉的功能交叉串口线:COM2每个UART控制器包括四个部分:发送器、接收器、波特率发生器、控制单元UART控制器内部结构图: 1.发送器-TXD0发送的复用的GPIO管脚GPA0_11)发送缓冲寄存器,用于存放CPU将发送的数据,大小:1字节(非FIFO模式)/256字节(ch1 FIF

18、O模式,每个UART的FIFO模式下大小不一样) 2)发送移位器(移位寄存器),发送缓冲寄存器中的数据并不是直接送到输出引 脚上,必须先送到发送移位寄存器,然后再由移位器送到发送引脚,此步操作由 硬件完成,编程人员只需要把数据写入缓冲寄存器 2.接收器-RXD0接收的复用GPIO管脚GPA0_0 1)接受缓冲寄存器:用于存放从外接收来的数据,大小:1字节(非FIFO模 式)/256字节(ch1 FIFO模式,每个UART的FIFO模式下大小不一样) 2)接收移位寄存器:从接收引脚RXD0上接收来数据先存放在移位寄存器中,当 收满一个字节之后,再放到接收缓存寄存器中,此步操作也是由硬件完成,编程

19、 人员只需要从缓冲寄存器中读取数据 3.波特率产生器 发送移位寄存器和接收移位寄存器对数据的发送和接收都是按照波特率产生器产 生的波特率速度进行接收和发送,波特率的产生需要在时钟源的控制下进行,每 个UART控制器都有独立的时钟 时钟有PCLK内部系统时钟和SCLK_UART外部时钟GPA0CON Address = 0xE02000000/1分别设置为0010ULCON0寄存器用来设置数据格式Address =0xE2900000 设置为3UCON0 Address =0xE2900004 设置为5 PCLK:66.5MHZUTXH0 发送缓冲寄存器 Address =0xE2900020

20、URXH0 接收缓存寄存器 Address =0xE2900024UTRSTAT0 Address =0xE2900010UBRDIV0 Address = 0xE2900028 设置值为35(前提115200bps,PCLK:66.5MHZ)UDIVSLOT0 Address= 0xE290002C设置值为0x0080(前提115200bps,PCLK:66.5MHZ)UFCON0 Address = 0xE2900008 UMCON0 Address = 0xE290000C程序:发送字符功能的程序TPAD发送PC接收PC机显示出来1.配置函数:1)GPIO管脚设置成收、发模式2)禁止上下

21、拉电阻3)配置初始化串口2.发送字符函数Uart0_putc查询状态寄存器bit1,如果是1,表示往发送寄存器写入(8bit);如果是0,等待3.接受字符函数Uart0_getc查询状态寄存器bit0,如果是1,读取接收寄存器;如果是0,等待nand flash的使用存储器的分类:1.按存储介质分类:半导体、磁带和磁盘、光盘2.按存取方式分类:随机访问、顺序访问3.按信息的可保存持久性分类:易失性(断电后内容丢失RAM)、非易失性(断电后内容不丢失ROM Flash)4.按存储器在计算机系统中所起的作用分类:主存储器、辅助存储器、高速缓冲存储器1.什么是NandFlash存储设备,用来存储整个

22、系统,相当于PC中的硬盘2.TPAD中采用了什么Nand Flash三星的k9k8g08u083.如何才能操作Nand Flash对它进行读写操作,校验操作,需要阅读Nand Flash的datasheet4.Nand Flash的主要指标参数工作电压3.3V容量(1G主存储区+32Moob区)*8bit读写操作 按页(2K+64)*8bit擦除操作:按块(128K+4K)*8bit 1块=64页命令、地址、数据复用8个IO口可以对存储块进行写、擦除锁定可以100K次的写、擦除(并且可以提供1bit/528byte ECC校验)数据可以保存10年使用命令操作Nand Flash存在唯一的ID号

23、引脚封装信息特性:1.没写数据之前里面都是12.写数据的时候,把1改成0,不能把0改成13.已经写过数据再写数据前需要先擦除Nand erase 0 100000 Nand write 20008000 0 1000004.存在位翻转(位交换)5.出厂时可能存在坏块6.擦写次数有限制由程序员直接操作的信号:nCE片选信号由硬件(Nand Flash控制器)自动产生的信号:IO0-IO7、ALE、CLE、nRE、Nwe、R/nB主存储区 1GSpell区 存储坏块、校验值等附加信息 32M读、写大小单元:一页 2K擦除大小单元:一块 64页 即128Kword 32bithalf-word 16

24、bitbytes 8bit指令集:CPU依靠指令来计算和控制系统,每款CPU在设计时就规定类一系列与硬件电路相配和的指令系统。最为主流体系结构来讲,指令集分为:复杂指令集和精简指令集精简指令集(RISC):1)简单、指令的功能单一,单周期执行2)指令定长(32位ARM指令集、16位Thumb指令集),同等代码长度下比复杂指令集密度低3)所有数据运算都是在CPU的寄存器里面完成,速度快,因此ARM中寄存器比X86中寄存器多4)专门拿出一类指令访问存储器复杂指令集(CISC):如X861)指令不定长,8位、16位、24位、32位2)代码密集度比精简指令集高ARM编程模型:1.工作模式: 管理SVC

25、:复位、SWI指令 快速中断:发生高优先中断 中断:低优先级中断 中止:访问存储器非法情况 未定义:执行指令时,不能识别 系统:权限高 用户:权限受限2.工作模式分类: 权限:特权模式,除用户模式的其余6种模式 非特权模式:用户模式 异常/非异常:异常模式:除系统和用户模式外的5种模式 非异常模式:用户模式和系统模式3.状态之间切换: ARM状态:执行ARM指令,PC字对齐,最后两个bit为00 Tthumb状态:执行Thumb指令,PC半字对齐,最后一个bit为0 切换方式: 指令切换:BX 处理器自动切换:发生异常时自动进入对应模式 用指令切换: 1.特权模式之间可以随意切换 2.可以从特

26、权模式切换到用户模式 3.不能从用户模式切换到特权模式 4.如果想从用户模式切换到特权模式可以用SWI指令ARM寄存器:R0-R15 CPSR SPSR等所有的寄存器对于软件来说都是没有地址的C语言中寄存器变量:比普通变量快,正使用寄存器的变量数量有限,寄存器变量不能取地址R13 SP 栈顶指针寄存器,存放的是内存的地址,栈是内存的一个区域R14是返回地址地址寄存器R15存放的是取指指令的地址各种模式可以有自己的栈,但用户模式和系统模式共用一个栈,因为栈顶指针寄存器共用,其他异常模式可以有自己的栈SPSR有5个,用户和系统模式没有ARM里面外部中断有两种:IRQ和FIQ,快速中断指对事件的响应

27、速度快,体现在1)FIQ模式的优先级高于IRQ优先级,2)FIQ模式自己专有的寄存器比IRQ要多,3)在异常向量表中,FIQ入口在最高地址,FIQ异常处理程序可以直接顺序的存放在异常向量表里,可以不用跳转指令。B指令 4个字节 32位高8位,B指令及条件标志低24位,放的是偏移量,表示的范围,如果是无符号则16M,有符号+/-8M有符号的情况下:因此24位中一位代表符号位,另23位表示偏移量PC值的特点,在ARM状态下,执行ARM指令时,PC值的最后两位永远是00,默认就不用保存,即不占24位中的位置,那么相当于扩大了2位的范围,2位即4倍,所以范围是8M*4=32M执行BL指令时,硬件会自动将bl指令的下一条指令的地址赋值给lr寄存器,跳转到子函数执行时,返回时将lr中指令地址赋值给PC相对跳转是动态跳转,只有程序运行起来后才知道跳转到哪里(在编译和链接过程中都只是计算跳转的偏移量),B、BL指令都是相对跳转,位置无关码BX 寄存器rr0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1