linux--裸机开发
主要在无linux系统下驱动ARM
lzs_blog
嵌入式
展开
-
69.ARM裸机开发--中断(补充)
一. ARM中断硬件层面:中断也属于异常的一种,我们平时开发常用的就是定时器中断,按键外部中断等。初始化过程就是要过五关斩六将,获得许可之后才能到达最后的cpu核。二.中断过程软件层面1. 中断初始化 a. 管脚初始化 b. 中断控制器初始化2.中断向量表 a.中断发生后,硬件自动跳转 b. 现场保护 c. 调用中断处理3.中断处理 a. 根据中断号做相应处理 b. 清中断标志 c. 现场恢复...原创 2020-09-08 23:32:47 · 564 阅读 · 0 评论 -
68.ARM裸机开发--USART操作(补充)
一.设备间通讯单线 双线 uart (全双工 异步) 双线 i2c (半双工 同步) 三线 spi (全双工 同步) 并行通讯 多根数据线 地址线,如内存二.串口通讯协议三. 串口内部机制四.串口编程1.初始化 管脚设置为UART模式 串口协议设置(奇偶校验为,数据位等) 串口波特率设置2.发送字符 发送状态判断 发送3.接收字符后环回 接收状...原创 2020-09-08 22:23:32 · 380 阅读 · 0 评论 -
67.ARM裸机开发--LED控制(补充)
一.ARM裸机开发步骤1. 看电路图 a. 找到我要控制的设备 b. 找到设备在CPU侧的控制管脚(如GPX2_7)2. 看芯片手册 (先看相关的中文文档,熟悉设备,再看手册) a. 搜索电路图里对应控制管脚的名称(如GPX2) b. 看目录找到对应的控制模块(如:6 General Purpose Input/Output (GPIO) Control) c. 看该模块的overview 了解该模块的大概功能 d. 看控制寄存器(REGI...原创 2020-09-08 21:37:12 · 412 阅读 · 0 评论 -
54.ARM 异常处理
一.什么异常?异常我们可以笼统的理解为中断,它的范围更宽泛一点,复位啊,外部中断啊,都属于异常。都是向cpu请求打断正常的程序流程,进入特定程序的一种机制。二. ARM中的7种异常种类 优先级 异常 异常模式 描述 用途 1(最高) 复位异常(reset) SVC(特权模式) 复位电平有效时,产生复位异常,..原创 2020-05-28 23:14:07 · 497 阅读 · 0 评论 -
53.ARM汇编指令
为什么要学习汇编,这里就不说了,反正就是重要。一.常用的汇编指令二.汇编指令实例说了那么多的指令感觉蒙圈了,其实看下例子我们就知道怎么用了,我们完全可以将C语言代码,全部使用汇编来进行实现。...原创 2020-05-27 13:43:13 · 1573 阅读 · 0 评论 -
52.一文带你理解ARM程序的编译及执行过程
一.我们的的程序是如何被芯片识别的?有时我们会想,我们使用c语言或者更高级的语言写好代码,这些类似英文字母的东西芯片是怎么识别并且按照我们的想法执行的?上图是一个ARM芯片基本的硬件组成,我们的程序肯定是存放在FLASH上。我们一般的项目开发中,在启动文件中或者特定场景下为了更高的效率一般使用汇编文件,其他的逻辑实现一般使用c语言进行开发,也就是像上图一样汇编文件执行完毕后,跳到c文件中开始执行。C代码通过以下过程,生成最终的二进制机器码,存入FLASH中。(1)预处理.i文件(..原创 2020-05-27 13:20:03 · 3780 阅读 · 0 评论 -
51.Linux裸机开发--ARM基础概念及汇编环境搭建
之前学习了Linux的应用层开发,下面要开始linux的底层开发,当然最开始我们不是学习bootloader,也不是内核移植,而是开始ARM的裸机开发,那么我们老说ARM,那ARM是什么?目前比较火的,美国封锁我们的华为,ARM公司又和华为有什么关系?一.ARM基础概念详细的内容可以看一下我之前整理的博客:https://blog.csdn.net/lzs940320/article/details/90021068下面只对一些关键的知识进行一个复习总结。二.环境搭建及启动文件编写及原创 2020-05-26 16:02:10 · 889 阅读 · 0 评论 -
7.艰难学习Linux系统之NAND FLASH
Nand flash 主要用于存储大量数据,现在应用的比较多,学好它也是很有必要的。了解他的基本组成,硬件接口,访问时序和基本的操作。NAND FLASH 由2048(2K)个块组成,每个块由64个页组成,每个页由2K+64字节组成,2K字节用来存储数据,64字节用于存储控制信息。网上有人很形象的形容NAND FLASH为一个小区,小区里面有很多楼(块),每个楼有很多楼层(页),每层有原创 2017-03-28 17:01:25 · 378 阅读 · 0 评论 -
6.艰难学习Linux系统之内存管理MMU
在以前使用单片机过程中,没有涉及过MMU,所以知道是内存管理,但是还是不知道这个东东到底有什么作用。接下来一起来学习吧。它负责虚拟地址到硬件地址的映射,并提供硬件机制的内存访问权限检查。现在多用户进程的操作系统通过MMU 使得各个用户进程都拥有自己独立的地址空间:而内存访问权限检查可以保护每个进程所用的内存不会被其他进程破坏。MMU主要解决的问题:(1)就是程序大的时候,所要求的内存空间超原创 2017-03-28 14:46:01 · 543 阅读 · 0 评论 -
5.艰难学习Linux系统之存储管理器
这章开始学习存储管理器,一提到存储脑海里就会联想到很多存储相关的东西,NAND FLASH:容量大,掉电不丢失,相当于硬盘。不能直接寻址。NOR FLASH:CPU可以直接寻址,掉电不丢失。容量小SDRAM:也相当于内存它是片外扩展的,主要是执行程序SRAM:可读可写寄存器,相当于内存,掉电会丢失,但是运行速度快(片内空间只有4K)上面这些概念学习了很多次了,但是还是容易混淆原创 2017-03-28 14:38:29 · 458 阅读 · 0 评论 -
4.艰难学习Linux之GPIO(二)
前言:上一节,在程序下载流程上耽误了一些时间,现在正式开始GPIO的使用了。开始跟着韦老师的视频学习,发现GPIO点灯操作和单片机没有太大的区别,主要也是将相应的管脚配置为输出,然后输出高低电平,来控制灭亮。 那就涉及到了GPFCON(控制相应管脚输入输出)GPFDAT(控制高低电平)GPFCON地址0x56000050,GPFDAT地址0x56000054. 虽然原创 2017-03-27 14:39:12 · 473 阅读 · 0 评论 -
3.艰难学习Linux之万年不变的GPIO(一)
每一个学软件的最开始都是hello word !学嵌入式的每一款处理器都是从GPIO,点灯开始的。。。原理使用都是一样一样的,无非就是寄存器多点而已,现在开始用汇编语言点灯,用C语言点灯,顺便学习启动文件,是怎么调用到main函数的,总体难度不大。。啪啪打脸啊。。。虽然心里暗示是不错的,但是第一个小程序就出现了问题。出现什么问题暂且不说,想要点灯要有开发板,我选择了韦东山老师的Jz24原创 2017-03-24 17:03:17 · 766 阅读 · 2 评论