




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 一:开发工具的使用安装ads在开发工具目录下的ADS1.2下面双击【SETUP.EXE】,安装到默认目录【C:Program FilesARMADSv1_2】破解ads安装ads的过程中会提示安装license,出现如下界面推荐精选点【Browse】定位到ads的安装文件的【CRACK】目录,选中LICENSE.DAT文件即可3. 安装调试工具HJTAG 双击【H-JTAG V0.4.4.EXE】 推荐精选安装完毕,在安装目的文件夹下面将会有下列文件:4. 如何使用H-JTAG进行调试双击桌面上的【H-JTAG】图标将会弹出如下窗口推荐精选如果JTAG连接板一边连上了PC的打印口,一边连上了
2、开发板,那么点击H-JTAG Server的将会出现,中间部分表示已经找到了CPU的ID号。PC并口位于后面板,如下图推荐精选H-Ttag连接板如下:二运行测试例程,验证开发板是否OK运行老师给的myled工程文件,即双击myled.mcp文件推荐精选可以看到以下界面:点开main.c,看看源码推荐精选看不懂,没关系,直接运行,看结果点【】将会调出AXD调试界面推荐精选运行程序点出现下面界面观察开发板灯态,灯在亮灭!三,程序起源第一条语句,存放在哪里,如何执行推荐精选3.1 建工程NEW->选中Project->ARM Executable Image,然后在Project nam
3、e中填写你要命令的工程名字,最后在Location下面选中你要存放你工程的目录点确定后,将会在你选中的目录下面生成一个以你工程名相同的目录,而且在该目录下有一个你命名的工程推荐精选推荐精选3.2 接下来,新建文件与新建工程一样,进入NEW目录,在该界面下,选中File文件,如下图所示点确定后,将会出现如下情形因为是新建文件,里面为空。推荐精选3.3. 如何写代码看老师给的中文-ARM_汇编zhiling.pdf中的第107页,从第96页一直看到107页,特别是107页的那个完整的例子。3.4 搭框架 通过C语言的程序框架来理解汇编的程序框架推荐精选3.5 框架搭好了,第一条语句怎么写看老师给的
4、中文-ARM_汇编zhiling.pdf中的第15页ARM汇编指令分ARM指令集和thumb指令集,我们只需要了解以下ARM指令集就行了,ARM指令集分,储存器访问指令,数据处理指令,跳转指令,杂项指令,伪指令几种。看,中文-ARM_汇编zhiling.pdf中的目录结构。要用到那类指令,就到相关目录下去找,无需死记硬背。写一条数据处理指令mov r0,#0x88推荐精选记得保存3.6然后编译编译成功如下生成的目标文件生成的可执行文件axf生成的bin文件推荐精选3.7 真正认识目标文件,可执行文件,二进制文件 Axf文件 Start.o目标文件推荐精选Start.bin文件四:ARM机器码
5、推荐精选 4.1 指令码,条件码推荐精选五: 认识什么是cpu中的寄存器推荐精选5.1 r14lr寄存器5.2 r15pc寄存器为什么pc=0x30000000六:从根本上理解内存的概念0x30000000的来历-à推荐精选上面配置中的0x30000000又是根据什么来的?查看老师给的s3c2440全套中文资料推荐精选 我们的SDRAM位于0x300000000x40000000=?多少M 我们的板子有多少M,SDRAM 见mini2440-um-20090223.pdf 我们的CPU总共可以挂载256M的sdram,而实际上,我们的板子只有64M。那,这64M内存空间究竟位于0x3
6、00000000x40000000中的哪个位置呢?这个由硬件工程师来决定。推荐精选参见原理图mini2440原理图.pdf两个HY57V561620 拼成64M因为,物理上HY57V561620的片选信号是接在2440的nGCS6上,所以,我们的内存是0x300000000x34000000-能心算出来吗?推荐精选6.1 存储器系统推荐精选6.2 如何访问我们的内存先看一个非常重要的数据文件推荐精选搞清楚代码和数据存放位置,彻底理解了吗?6.3用汇编代码怎么实现? Ldr ,str汇编指令,怎么用?不用急,不用背,参考资料中文-ARM_汇编zhiling.pdf第19页推荐精选六-:总线的概念
7、推荐精选6.1 哈弗结构&冯诺依曼结构推荐精选七:怎么从汇编过渡到CIMPORT是导入外部符合的意思,不懂的参考中文-ARM_汇编zhiling.pdf注意在单步执行或者全速运行的时候出现下面现象是优化等级的问题推荐精选设置成调试模式推荐精选八:s3c2440 GPIO控制原理思路:要控制一个设备,首先想到的是搞清楚这个硬件设备在什么位置。怎么办? 推荐精选参考mini2440-um-20090223.pdf第13页找到丝印再找原理图参考原理图mini2440原理图.pdf第3页。通过网络表Nled_1,在原理图中找到控制这个灯的cpu引脚。找到cpu引脚与LED灯的对应关系如下GPB
8、5-Nled_1GPG6-Nled_2GPB7-NLED_3GPB8-NLED_4接下来怎么办?接下来就要看cpu的说明书了,就像我们买了一个微波炉,使用前就要看一下它的说明书,我们CPU的说明书就是s3c2440的datasheet。即S3C2440全套中文手册.PDF推荐精选8.1 datasheet怎么看Cpu的简介,搞清楚我们这个cpu有哪些资源。8.2 GPIO控制原理推荐精选GPBCON xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx GPB10 9 8 7 6 5 4 3 2 1 0两个位控制一个引脚,所以GPB0GPB10共11各引脚,需要021
9、共22各位来设置00-该引脚配置为输入01-该引脚配置为输出10-该引脚配置为其他特殊功能11-一般引脚表示保留,未使用要让我们四个LED亮灭,GPBCON寄存器该如何设置呢?GPBCON=?GPBDAT是数据寄存器,用来控制(或者反应)引脚的高低电平,该寄存器是一个位对应一个引脚,如果某个位为0那么对应引脚为低电压,如果为1则引脚为高电平GPBDAT xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx GPB 10 9 8 7 6 5 4 3 2 1 0原理搞清楚了,程序怎么写?8.3 程序怎么写我们要把某个引脚设置为输出,也就是我们的GPBCON寄存器要配置为0
10、x15400,那么这个值怎么给我们的cpu呢?推荐精选这里的地址,就是cpu提供给我们控制它的接口。知道了这个接口,代码怎么操作呢?这里涉及到怎么访问可读性的绝对地址问题?学生动手实现延时函数,宏定义,led配置,led亮,led灭函数。8.4 作业,学生自己实现beep九:s3c2440时钟系统参考S3C2440全套中文手册.PDF152页。推荐精选时钟系统中:FCLK,HCLK,PCLK的关系AHB,APB两者的关系PLL的意思电源管理中:普通模式的理解-功耗最大,速度最快慢速模式的理解-没有PLL空闲模式的理解-cpu空闲,没有时钟,其他外设有时钟睡眠模式的理解-cpu和内部逻辑电源关闭
11、,唤醒逻辑电源是开启的,通过EINT或RTC唤醒。推荐精选OM3:2怎么理解?推荐精选引申一点:OM【1:0】怎么理解?对PLL的大概认识:推荐精选FCLK推荐精选FCLK默认值=2*m*Fin/(p*2s)=2*(MDIV+8)*12/(PDIV+2)*2SDIV) =2*158*12/(5*2)=379HCLK根据CLKDIV2:1来设置PCLK根据CLKDIV0来设置9.1 代码实现这样设置真的打开了吗?如果有示波器量量就清楚了,示波器真是个好东西!推荐精选9.2 关于锁定时间推荐精选9.3 注意各模块都有时钟开关推荐精选十:定时器参考S3C2440全套中文手册.PDF212页。步骤:1
12、:配置分频值2:设置控制寄存器3:设置相关定时器通道的计数值4:通过观察寄存器判断是否计数到0推荐精选10.1配置分频值 TCFG07:0第70位设置定时器0,1的预分频值 TCFG015:8第158位设置定时器2,3,4的预分频值 如果我们要用定时器4,而且要255分频该怎么设置呢?代码怎么写? 该寄存器配置五个定时器的档位,分2,4,8,16档如果我们要使用定时器4,且16分档,该寄存器怎么设置呢?推荐精选10.2 配置控制寄存器主要是设置TCON寄存器, 我们使用的定时器4,那么只需要设置TCON【22:20】位即可。推荐精选10.3 配置计数缓冲寄存器给整个PWM提供的时钟是PCLK(
13、50Mhz),首先经过255分频,然后16分频得到,50*1000000/255/16=12254.9=12255所以TCNTB4该设置为1225510.4 怎么知道计数器计数到0了这个寄存器是一个侦测寄存器,它时刻侦测定时器4的计数器值,所以,我们可以通过它来判断计数器是否计数到0.推荐精选10.5 pwm实现自动控制蜂鸣器推荐精选十一:按键实现作业,实现KEY1控制LED1的亮灭(按下亮,再按灭) 实现KEY2控制LED2的亮灭(按下亮,再按灭) 实现KEY3控制LED3的亮灭(按下亮,再按灭) 实现KEY4控制LED4的亮灭(按下亮,再按灭) 实现KEY5控制beep(按下响,再按不响)
14、推荐精选十二:中断12.1 不用中断如果没有中断,是怎么样一种情况呢?看下图:如果不用中断,要实现每一秒定时亮灭一次,亮灯的程序只能放在while里面,或者做成一个函数在while里面调用!12.2 不用中断带来的问题问题一:实时性不够好问题二:没有优先级概念,重要事情得不到体现12.3 使用中断的程序结构:推荐精选12.4 很奇怪的现象没有地方调用Timer4_ISR函数,断点如何进去?12.5 顺藤摸瓜跟这个函数有关的地方是pISR_TIMER4 = (unsigned int)Timer4_ISR;这条语句。这条语句实现的功能是,把某个函数名称复制给一个地址!pISR_TIMER4定义在
15、而_ISR_STARTADDRESS定义在:推荐精选最后的结果就是:(*(unsigned *)(0x33ffff00+0x58) = (unsigned int)Timer4_ISR; 这些地址就是提供给我们程序员存放中断服务程序地址的! 当我们定时器中断发生时,cpu如何跳到(0x33ffff00+0x58)处取出中断服务程序地址?回答这个问题,要从arm中断体系讲起!推荐精选十三:arm体系结构13.1 arm八种模式13.2 八种模式的运行过程推荐精选推荐精选13.3 八种模式寄存器推荐精选13.4 CPSR&SPSR寄存器推荐精选13.5 七种异常推荐精选13.6 异常向量表
16、,IRQ向量表,MMU之间的关系 因此,通过MMU,当IRQ中断发生时,程序可以条到0x300000018处运行,而此处是一条跳转指令b HandlerIRQ,那么HandlerIRQ在哪里呢?我们再来看汇编里面的关系!十四:s3c2440启动代码中断脉络关系bicr0,r0,#MODEMASK 0x1f Xxxx xxxx xxxx xxxx Bic 0000 0001 1111 1100 Xxxx xxx00 000推荐精选 ; Setup IRQ handlerldrr0,=HandleIRQ ;This routine is neededldrr1,=IsrIRQ ;if there
17、is not 'subs pc,lr,#4' at 0x18, 0x1cstrr1,r0 HandleIRQ = IsrIRQ HandlerIRQ /SP=0x33ff7000 sp-4=0x33ff6ffcsubsp,sp,#4;decrement sp(to store jump address)stmfdsp!,r0;PUSH the work register to stack(lr does not push because it return to original address)ldr r0,=HandleIRQ;0x33ffff00+0x18= load t
18、he address of HandleXXX to r0ldr r0,r0 ;r0=0x33ffff00+0x18=ISR_IRQ load the contents(service routine start address) of HandleXXXstr r0,sp,#4 ;store the contents(ISR) of HandleXXX to stackldmfd sp!,r0,pc ;POP the work register and pc(jump to ISR)MEND当IRQ异常发生时,cpu跳到0x300000018处执行程序(本来cpu是跳到0x00000018执
19、行的,但是因为有MMU的映射,就跳到了0x300000018),而0x300000018处放的是一条跳转语句b HandlerIRQ,而HandlerIRQ是一个宏,展开后,实际上是去执行HandleIRQ,而HandleIRQ在之前(irq异常中断发生前)就已经复制了,该地址(即HandleIRQ)处存放的是IsrIRQ处的代码地址。IsrIRQ实现的就是从IRQ向量表中取出当前发生中断的中断服务程序地址,即(0x33ffff00+0x58)的地址Timer4_ISR。十五 0x33ffff00的迷惑0x33ffff00这个地址,是我们程序员来定义的,当我们地址到0x32ffff00的时候,
20、记得在mmu映射时,要定义好映射基地址,推荐精选十六:串口通信16.1 串口长什么样子16.2 通信过程推荐精选16.3 串口通信可以做什么 GSM,GPSR,3G,4G模块=手机最基本的通信功能 Bluetooth模块=蓝牙通信 工业485通信16.4 串口通信原理16.5 怎么实现通信(PC端)PC端,设备管理器里推荐精选并对PC端,串口进行配置16.6 怎么实现通信(S3C2440端)推荐精选16.7 要发送的数据往哪儿放?代码如何写:*(unsigned int *)0x50000020 = data/data为我们要发送的数据(8位)16.8 怎么知道发送完毕 数据给了发送器,那么串
21、口控制器肯定有一个状态寄存器来指示推荐精选其中的第二位就是指示发送器为空的,当UTRSTAT02=1,表示发送器为空了,也就是我们给UTXH0的数据发送完毕了。代码怎么实现?while(!(*(volatile unsigned int *)0x50000010) & 0X4);16.9 怎么设置端口号,波特率 关注细节 1:怎么设置端口号 2:怎么设置波特率我们要找到设置数据位,停止位,校验位,波特率的寄存器。推荐精选数据位,停止位,校验位的设置:我们通过ULCON0来设置串口0的数据位,停止位,校验位,代码实现:*(unsigned int *)0x50000000 = 3/时钟的
22、选择,通道开关:推荐精选这组寄存器是用来设置串口时钟源的!我们选择PCLK,这里的默认配置就是00;推荐精选 代码实现:该寄存器只需要设置如下值: *(unsigned int *)0x50000004 = 4/使能发送mode波特率的设置:波特率的计算根据公式: 所以UBRDIV0 = PCLK/(115200*16)-1推荐精选19.20如何写代码实现向PC发送helloworld字符串PC端结果好像发送速度太快,如何加入延时函数?发送单字符成功了,如何发送字符串?16.20 如何做接收功能?接收功能就是,PC端向我们的板子发送字符,我们要写程序接收。推荐精选十七:看门狗17.1 复位功能
23、#define WTCON (*(volatile unsigned int *)0x53000000)#define WTDAT (*(volatile unsigned int *)0x53000004)#define WTCNT (*(volatile unsigned int *)0x53000008)WTCON = (255<<8) | (1<<5) | (0<<3) | (0<<2) | (1<<0);推荐精选 问题:怎么解决这个问题?推荐精选17.2 中断功能十八:AD转换18.1 要搞清楚的几个问题:1:为什么说分别率是10位的-对分别率的理解答:这是由数据手册标明的,2440的ad位数是10位,所以分别率是10位;2:转换时钟(2.5Mhz)与采样频率(500ksps)的关系答:转换时钟2.5Mhz即指每秒有2500次;上面提到在2.5Mhz的转换频率下采用频率是500ksps,那么就知道每采用一次需要5个时钟。推荐精选3:线性误差的概念4:供电电压和模拟输入范围电压(参考电压)答:供电电压是AD控制器的工作电压;模拟输入电压范围03.3v,是指模拟量可以是03.3V,最大只能转换3.3v电压
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年计算机基础全方位复习试题及答案
- 渠道优化策略小自考试题及答案
- 二手车评估中消费者权益的保障措施试题及答案
- 2025年小学一年级语文趋势试题及答案
- 第2讲 固体、液体和气体-2026版大一轮高考物理复习
- 小学生班会规范
- 汉语言文学自考注重过程评价及试题及答案
- 大学古代文学史写作技巧试题及答案
- 新生适应性教育主题班会
- 二手车线上交易的现状与未来试题及答案
- 【版】(4月4日)清明守规平安同行- 清明节假期安全教育主题班会 高中主题班会课件
- 《愿望的实现》读书分享课件
- 2024年安庆迎江区招聘社区工作人员考试真题
- 事故隐患内部报告奖励制度
- 贸易安全培训
- 2025年长春汽车职业技术大学单招职业技能测试题库必考题
- 2024年山东电力中心医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 2025年上海市浦东新区高三语文一模作文题目解析及范文:一个人履行责任是否意味着放弃自由
- 浙江省四校联考2023至2024学年高一下学期3月月考化学试题附参考答案(解析)
- 重力坝毕业设计-水电站混凝土重力坝工程设计
- 战略预算管理基本原理培训ppt课件
评论
0/150
提交评论