08 2016 档案

ESP8266-iot-简介1
摘要:ESP8266简介 阅读全文

posted @ 2016-08-31 09:23 gary_123 阅读(743) 评论(0) 推荐(0) 编辑

专题2-通过按键玩中断\2440按键中断编程lesson2
摘要:1、程序优化 修改Makefile 把main.c里面的mmu代码复制到mmu.c并修改如下 main.c的修改 由于在bootloader当中一般不会使用MMU,所以 main.c 加入led.c文件 makefile 2440中断源初始化 打开开发板底板与核心板原理图 底板 比如K1对应EINT 阅读全文

posted @ 2016-08-25 22:09 gary_123 阅读(247) 评论(0) 推荐(0) 编辑

UCOSII在STM32F407上的移植
摘要:1、ucosii移植准备工作 1.1准备基础工程: 移植的时候需要一个基础工程,为了方便起见我们就选取跑马灯实验,作为ucossii移植的基础工程。 1.2Ucossii源码: 1)Micrium官网下载 2)开发板光盘自带 2、Ucossii移植步骤 1)step1 在基础工程文件夹中先建立UCO 阅读全文

posted @ 2016-08-24 13:42 gary_123 阅读(3032) 评论(0) 推荐(0) 编辑

专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1
摘要:中断概念 1、中断生命周期 串口先产生一个事件,该事件传送到中断控制器里面,中断控制器会进行相应过滤,能通过过滤,那么就交给CPU去处理。 2、中断源 2440芯片手册 6410芯片手册 3、中断过滤 4、中断处理 cpu处理方式有两种: 非向量方式: 向量方式: 总结:整个生命周期中软件的角色 阅读全文

posted @ 2016-08-23 14:10 gary_123 阅读(276) 评论(0) 推荐(0) 编辑

专题1-MMU-lesson3-MMU配置与使用
摘要:1、段方式MMU 利用虚拟地址然后找到物理地址,通过物理地址访问到led,其过程如下: 一个段的大小是[19:0]总共有1M的地址空间。 从上面可知对应GPIO的段物理基地址是0x7f000000.那么要在虚拟地址当中找一个段与之形成对应关系,那么这个段是多少呢,假如是0xa0000000这个段,把 阅读全文

posted @ 2016-08-23 14:04 gary_123 阅读(737) 评论(0) 推荐(0) 编辑

专题1-MMU-lesson2-深入剖析地址转化
摘要:1、地址转化总体分析 level one fetch和level two fetch分为一级转换和二级转换。 由上图右边可以看出,首先通过TTB(Translation Table Base)寄存器找到转换表基地址,该表有4096项,然后用虚拟地址的[31:20]位来找该表里面的表项,再检查该表项最 阅读全文

posted @ 2016-08-23 11:01 gary_123 阅读(432) 评论(0) 推荐(0) 编辑

专题1-MMU-lesson1-MMU功能解析
摘要:1、Memory Management Unit(存储器管理单元) 单片机与ARM在硬件体系上的一些区别:其中就有MMU的区别。 虚拟地址的使用 把p1.c复制成P2.c,把变量a改成b,再进行编译看看情况如何 可以看出两个程序在同样地址读出不同的值,在这里就用到了MMU。 在这里程序当中的地址都是 阅读全文

posted @ 2016-08-22 18:40 gary_123 阅读(247) 评论(0) 推荐(0) 编辑

Part10-C语言环境初始化-C与汇编混合编程lesson4
摘要:1、为什么要混合编程 汇编语言:执行效率高;编写繁琐; 执行效率高;能够更直接地控制处理器。 c语言:可读性强,移植性好,调试方便。 1、汇编调用c函数 2、c调用汇编函数 汇编语言定义的函数(标号),需要把它定义为全局的。 在start.s中修改 在main.c中修改 3、c内嵌汇编 1、格式 输 阅读全文

posted @ 2016-08-22 18:06 gary_123 阅读(217) 评论(0) 推荐(0) 编辑

Part10-C语言环境初始化-一跃进入C大门lesson3
摘要:1、跳转到c代码 因为内存中的代码来自于垫脚石SRAM,他们是相同的。 采用绝对跳转方式来完成。 因为我们是从汇编代码跳转到c语言的程序,所以我们要提前准备一个main.c文件。 修改makefile 2、验证看跳转成功没有 使用c语言来点亮led 汇编中的led点亮 在c语言当中地址一定要有类型的 阅读全文

posted @ 2016-08-22 15:56 gary_123 阅读(204) 评论(0) 推荐(0) 编辑

Part10-C语言环境初始化-Bss段初始化lesson2
摘要:1、BSS段的作用 初始化的全局变量存放在数据段; 局部变量存放在栈中; malloc的存放在堆; 未初始化的全局变量存放在BSS段; 找到bss段的起始与结束地址,往里面添加0,便初始化好了。 打开连接器脚本 阅读全文

posted @ 2016-08-22 14:16 gary_123 阅读(200) 评论(0) 推荐(0) 编辑

Part10-C语言环境初始化-栈初始化lesson1
摘要:1、概念解析 ARM系统使用的是满栈! ARM采用降栈!!! 栈帧 每一个进程会有一个栈,该进程中的每一个函数会分割栈的一部分,那么每一个函数使用的那部分栈就叫做栈帧。那么所有栈帧组成了整个栈。 子函数func里面保存了main函数的上边界FP和下边界SP。 2、栈的作用 保存局部变量 代码样例 编 阅读全文

posted @ 2016-08-22 13:57 gary_123 阅读(246) 评论(0) 推荐(0) 编辑

Part9---代码搬移不可少
摘要:1、回顾ARM启动流程就可知道需要执行代码搬移 2、代码搬移 1)起点:NAND FLASH,今天的起点是SRAM垫脚石。为什么?因为我们要从nandflash取搬移数据需要先对其进行初始化,二而我们并没有初始化;垫脚石SRAM起始地址:2440为0,6410为0x0c000000,210为0xd0 阅读全文

posted @ 2016-08-22 12:28 gary_123 阅读(328) 评论(0) 推荐(0) 编辑

Part8-不用内存怎么行_6410内存初始化lesson3
摘要:1、6410地址空间 外设区:从0x70000000-0x7FFFFFFF有256MB 主存储区:从0x00000000-0x6FFFFFFF有1972MB 对于主存储区: 静态存储区可以接我们的NOR Flash以及One nand等等设备,它的6*128MB意思是有6个BANK,每个BANK有1 阅读全文

posted @ 2016-08-21 12:23 gary_123 阅读(271) 评论(0) 推荐(0) 编辑

Part8-不用内存怎么行_2440内存初始化lesson2
摘要:1、2440地址空间 先去找PCB原理图,看CPU引出的内存地址线和数据线的宽度。 说明内存的其实地址是0x30000000为起始地址。 初始化内存其实是去初始化存储器控制器,只有初始化好这个存储器控制器之后才能访问相应的芯片。 2、内存芯片的硬件连接 3、存储控制器 打开芯片手册,找到存储器控制器 阅读全文

posted @ 2016-08-20 23:19 gary_123 阅读(322) 评论(0) 推荐(0) 编辑

Part8-不用内存怎么行_我从内部看内存lesson1
摘要: 阅读全文

posted @ 2016-08-10 11:27 gary_123 阅读(196) 评论(0) 推荐(0) 编辑

4、MemorySubSystem
摘要:1、概述 S3C6410X存储器子系统包括7个存储器控制器,SROM控制器,两个OneNAND控制器,一个NAND Flash控制器,一个CF控制器,一个DRAM控制器。静态存储器控制器,oneNAND控制器,NAND控制器和CF控制器通过EBI公用存储器端口0. Note) 6410X PoP A 阅读全文

posted @ 2016-08-07 22:21 gary_123 阅读(606) 评论(0) 推荐(0) 编辑

Part7-时钟初始化_lesson1
摘要:1、概念解析 1.1时钟脉冲信号 1.2时钟脉冲频率 1.3时钟源(提供时钟脉冲信号) a、晶振 b、锁相环PLL 2、时钟体系 2440: 晶振的频率、时钟体系有多少个PLL、这些PLL分别产生了哪些时钟、产生的时钟用来做什么的。 采用的是12MHZ,总共有2个PLL分别是MPLL、UPLL,MP 阅读全文

posted @ 2016-08-07 20:11 gary_123 阅读(354) 评论(0) 推荐(0) 编辑

Part6-点亮指路灯_lesson1
摘要:1、 2、GPIO 查阅芯片手册:GPIO 代码: 3、外设基地址初始化 打开arm核手册, 基地址为0x70000000,去搜芯片手册6410, 把这个基地址告诉处理器,通过协处理器的cp15, 转自http://comm.chinaaet.com/adi/blogdetail/40023.htm 阅读全文

posted @ 2016-08-07 19:51 gary_123 阅读(208) 评论(0) 推荐(0) 编辑

Part5核心初始化_lesson4---关闭mmu
摘要:1、ARM存储体系 2、cache 3、虚拟地址 那么谁来完成把虚拟地址转换成物理地址呢? 4、这个工作就由MMU来转换!! 5、关闭MMU和cache 他们都是通过cp15协处理器来控制的!应该在ARM核的手册里面搜索CP15 1、首先要使I/Dcache里面的数据无效 2、关闭I/D cache 阅读全文

posted @ 2016-08-06 10:28 gary_123 阅读(218) 评论(0) 推荐(0) 编辑

Part5核心初始化_lesson4---关闭中断
摘要:1、关闭cpsr寄存器里面的I(中断)和F(快速中断)位; 2、设置中断屏蔽寄存器。 针对2440: 这是中断处理过程,当有中断源(没有子中断源)来的时候,它会把这个中断记录在SRCPND里面;它还要经过MASK屏蔽寄存器,如果我们对对应位屏蔽了,那么它就无法进入到IRQ这里来处理。对于有子中断源的 阅读全文

posted @ 2016-08-05 20:20 gary_123 阅读(220) 评论(0) 推荐(0) 编辑

Part5核心初始化_lesson3---关闭看门狗
摘要:1、看门狗 作用 2、看门狗工作方式 3、原理图 时钟源来自于PCLK经过分频器,经过选择器,输出到作为看门狗定时器,WTDAT为一个预载值,当它计数为零的时候,还没有给WTDAT赋值,那么它会发出一个重启信号RESET。 找到S3C6410X文件,找到里面的watch dog章节, 关闭代码如下: 阅读全文

posted @ 2016-08-05 20:19 gary_123 阅读(326) 评论(0) 推荐(0) 编辑

Part5核心初始化_lesson2---设置svc模式
摘要:我们的Linux系统以及bootloader是工作在SVC模式!!怎么把处理器设置为SVC模式呢? CPSR寄存器或者SPSR寄存器最低5位可以设置模式,把该5位设置为0b10011, start.s文件 阅读全文

posted @ 2016-08-05 19:16 gary_123 阅读(237) 评论(0) 推荐(0) 编辑

Part5核心初始化_lesson1---异常向量表
摘要:1.1异常 异常向量: 异常向量表: 代码的编写 start.S文件 gboot.lds链接器脚本文件 makefile工程文件: 阅读全文

posted @ 2016-08-05 19:04 gary_123 阅读(218) 评论(0) 推荐(0) 编辑

Part4_lesson4---Bootloader架构设计
摘要:1、第一阶段程序设计 第二阶段程序设计 阅读全文

posted @ 2016-08-05 18:00 gary_123 阅读(291) 评论(0) 推荐(0) 编辑

Part4_lesson3---U-Boot工作流程分析
摘要:1、程序入口 我们从什么地方去找入口呢,首先是打开顶层目录的makefile文件,在这个文件里面,每一个uboot支持的开发板都有一个配置选项,比如说,搜索smdk2440,结果如下 我们主要关注上图的右方那个红线处,它决定了开发板的名称smdk2440,拿到这个名称后,我们到目录board\sam 阅读全文

posted @ 2016-08-05 16:50 gary_123 阅读(331) 评论(0) 推荐(0) 编辑

zigbee--绑定
摘要:1、绑定是zigbee一种基本通信方式;具体绑定通信又分为3种模式,在这里只拿一种源绑定来说明。 源绑定: 发送模块 :必须要知道接收模块(被绑定模块)的网络地址或者MAC地址 接收方的接收端点 接收方的接收簇 发送模块在发送的时候,会调用一个函数,这个函数会创建一个绑定表(一个结构体),结构体含有 阅读全文

posted @ 2016-08-05 11:50 gary_123 阅读(820) 评论(0) 推荐(0) 编辑

Part4_lesson2---ARM处理器这个硬件启动流程分析
摘要:1、启动方式 s3c2440:可以从Nor flash启动,Nor flash一般是2MB;也可以从Nandflash启动,它一般是256MB,我们习惯上把我们的uboot,内核以及文件系统都放到Nandflash里面去,选择开发板从nandflash启动。 当2440从nandflash启动的时候 阅读全文

posted @ 2016-08-04 23:14 gary_123 阅读(1500) 评论(0) 推荐(0) 编辑

Part4_lesson1---Bootloader设计蓝图
摘要:1、bootloader的作用 2、u-boot是bootloader业界的老大 u-boot分为自主模式和开发模式 3、建立U-boot工程 uboot不能在window下面进行解压,因为在windows下面它不区分大小写,所以很多文件会被丢失掉,而Linux下面是区分大小写的。 阅读全文

posted @ 2016-08-04 20:22 gary_123 阅读(287) 评论(0) 推荐(0) 编辑

zigbee之MAC地址发送
摘要:TI cc2530在出厂时候每一个芯片都固化了一个唯一的8个字节的地址,MAC或者IEEE地址。 协调器模块的MAC地址为:0x00124B000716550F(注意自己的是多少!!) 终端的MAC地址:0x00124B0007165581 相关的函数 memcpy函数需要加一个头文件#includ 阅读全文

posted @ 2016-08-04 16:01 gary_123 阅读(3139) 评论(0) 推荐(0) 编辑

Part3_lesson4---协处理器访问指令
摘要:1、什么是协处理器? CP15是协处理器, CP15的作用:系统控制协处理器CP15,它提供了额外的寄存器,这些寄存器用于配置和控制cache,MMU,保护系统,时钟模式,和其他的系统项,比如大小端操作。 如何访问CP15协处理器? 可以访问在CP15里定义的寄存器来达到访问CP15,,可以通过命令 阅读全文

posted @ 2016-08-03 22:29 gary_123 阅读(217) 评论(0) 推荐(0) 编辑

Part3_lesson3---ARM伪指令学习
摘要:1、ARM机器码 对elf格式的文件进行反汇编可得到相应汇编文件的机器码: arm-linux-objdump -D -S start.elf 机器码的解析,可以参考文件ARM Architecture Reference Manual的The ARM Instruction Set章节。 2、定义 阅读全文

posted @ 2016-08-03 20:47 gary_123 阅读(214) 评论(0) 推荐(0) 编辑

Part3_lesson2---ARM指令分类学习
摘要:1、算术和逻辑指令 mov、mvn、cmp、tst、sub、add、and、bic 2、比较指令 cmp和tst 3、跳转指令 b和bl 4、移位指令 lsl和ror 5、程序状态字访问指令 msr与mrs指令 6、存储器访问指令 ldr和str 阅读全文

posted @ 2016-08-03 20:07 gary_123 阅读(217) 评论(0) 推荐(0) 编辑

zigbee组播通信原理
摘要:组播: 在zigbee网络里面,把网络节点标记为组的方式来进行通信;发送模块如果发送的组号和网络里标记模块的组号相对应,那么这些模块就可以拿到这些无线数据包。 特点: 1、分组中组的编号有两个字节。 2、组都是和模块里已经定义了的端点相关联,如果我们说一个模块标记为组1,那么这个模块里至少有一个定义 阅读全文

posted @ 2016-08-03 17:42 gary_123 阅读(2667) 评论(0) 推荐(0) 编辑

zigbee广播通信原理
摘要:广播:可以理解成,发送模块发出数据,这个网络里的所有节点模块都可以拿到这个数据。 实验:终端模块以广播的形式发送出去,让协调器和路由器模块作为接收器收到数据并显示出来! 协调器模块作为接收模块: 和单播时候的协调器代码一样!! 路由器模块作为接收模块: 跟协调器模块一样! 终端模块作为发送模块: 广 阅读全文

posted @ 2016-08-02 23:15 gary_123 阅读(6105) 评论(0) 推荐(0) 编辑

Part3_lesson1---ARM汇编编程概述
摘要:bootloader以及内核需要使用汇编语言,特别是在初始化的时候!以及在效率要求很高的地方会使用。 汇编程序框架: 其入口在_start处,这个入口需要用一个关键字为.global来声明它是一个全局的标号,那么在外部文件才能够引用到它。 .section表示这是一个段,.text表示这是一个代码段 阅读全文

posted @ 2016-08-02 21:01 gary_123 阅读(263) 评论(0) 推荐(0) 编辑

Part2_lesson4---ARM寻址方式
摘要:所谓寻址方式就是处理器根据指令中给出的信息来找到指令所需操作数的方式。 1、立即数寻址 ADD R0,R0,#0x3f; R0<-R0+0x3f 在以上指令中,第二个源操作数即为立即数,要求以“#”为前缀 2、寄存器寻址 ADD R0,R1,R2 ;R0< R1+R2 该指令的执行效果是将寄存器R1 阅读全文

posted @ 2016-08-02 20:57 gary_123 阅读(245) 评论(0) 推荐(0) 编辑

Part2_lesson3---ARM寄存器详解
摘要:进入到ARM Architecture Reference Manual这个文档里面的A2.3 Registers R13在程序中通常用于充当SP堆栈指针的!! R14在程序当中通常用于充当LR(链接寄存器),有两个特殊功能:1、用于保存子函数的返回地址;2、保存中断函数的返回。 R15被用于程序计 阅读全文

posted @ 2016-08-02 20:46 gary_123 阅读(265) 评论(0) 推荐(0) 编辑

Part2_lesson2---ARM处理器工作模式
摘要:arm公司发布的学习手册:ARM Architecture Reference Manual。 打开之: 找到Programmers' Model->A2.2 Processor modes. 程序运行在不同的处理器模式时,ARM能够运行的指令是不一样的!能够访问的寄存器也是不一样的! 可以安排不同 阅读全文

posted @ 2016-08-02 19:55 gary_123 阅读(224) 评论(0) 推荐(0) 编辑

Part2_lesson1---arm家族大检阅
摘要:芯片(比如2440、6410、210等等)包含ARM核。 指令结构和ARM核有关系: ARM9对应指令架构版本ARMV4 ARM11对应指令架构版本ARMV6 cortex A8对应指令架构版本ARMV7 6410芯片的概况: 2440芯片的概况: 210芯片的概况: 阅读全文

posted @ 2016-08-02 19:42 gary_123 阅读(207) 评论(0) 推荐(0) 编辑

做一个终端发送和协调器接收实验
摘要:在终端的应用层任务挂上一个11号端点,接收(协调器)模块的应用层任务挂上7号端点和8号端点,其中7号端点上有两个簇0x0001和0x0002,8号端点上只有一个簇0x0001; 发送终端上有key3和key4,key5;接收器模块有led1,led2和led3,以及一个数码管。 按键3按下使接收模块 阅读全文

posted @ 2016-08-01 18:43 gary_123 阅读(1109) 评论(0) 推荐(0) 编辑

1、概率vs统计
摘要: 阅读全文

posted @ 2016-08-01 15:36 gary_123 阅读(303) 评论(0) 推荐(0) 编辑

理论相关概念原理
摘要:断点(Endpoint)特点: 1、它是一个字节编号的,数据收和发送的基本单元,在模块通信的时候,发送模块必须指定收发双方的网络地址和端点。 2、端点要使用必须要和模块里面的某个任务挂钩定义:当发送模块把数据发送给接收方的时候,接收方的网络地址匹配后,其底层会接收到数据,并查看是否有6号端点,以及查 阅读全文

posted @ 2016-08-01 11:11 gary_123 阅读(272) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示