嵌入式
文章平均质量分 89
huofengfeihu
这个作者很懒,什么都没留下…
展开
-
Linux Kernel编程 --- genalloc原理
参考链接:https://www.douban.com/group/topic/47566535/http://blog.chinaunix.net/uid-20321537-id-1966893.htmlhttp://www.alivepea.me/kernel/kernel-genalloc/转载 2020-03-03 21:12:15 · 1799 阅读 · 0 评论 -
ubuntu上 eclipse+arm-linux-gcc+jlink+s3c2440a开发环境搭建
0 环境搭建概述所需工具:(1)EclipseEclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较好的灵活性。(2)CDTCDT是Eclipse用于扩展Eclipse支持C/C++开发的插件。(3)ARM cross GCC tooltain整合了GNU arm的交叉编译工具链,是一个跨平台的 ARM 架构开发平台,是一个 Eclipse 的插件。(...原创 2019-11-27 21:58:14 · 2290 阅读 · 0 评论 -
嵌入式RTOS---异常和中断处理流程
ARM中断体系以S3C2440讲解1 中断体系硬件原理中断处理分为统一的中断处理和独立的中断处理;1.1 统一的异常和中断处理1.1.1 ARM的异常模式所谓异常,指的是中止了程序正常的执行过程而不得不完成一些特殊的工作(异常工作)。中断也是一种异常,中断包括由外部硬件产生的外部中断和内部硬件产生的内部中断。异常分为同步异常(SWI 软件指令产生的异常)和异步异...原创 2019-11-26 22:50:39 · 3131 阅读 · 1 评论 -
ARM存储:存储管理单元MMU
在创建多任务嵌入式系统时,最好有一个简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过程。较高级的操作系统采用基于硬件的存储管理单元MMU来实现上述操作。MMU提供的一个关键服务是使各个任务作为各自独立的程序在其自己的私有存储空间中运行。在带MMU的操作系统控制下,运行的任务无须知道其他与之无关的任务的存储需求情况,这就简化...转载 2019-10-11 22:31:43 · 2688 阅读 · 0 评论 -
设备树和Platform架构--2--设备树编译
本小节讲解(1)设备树编译(2)uboot对设备树的相关操作;参考:https://blog.csdn.net/woyimibayi/article/details/775747361 Device Tree编译Device Tree文件的格式为dts,包含的头文件格式为dtsi,dts文件是一种人可以看懂的编码格式。但是uboot和linux不能直接识别,他们只能识别二进制文件,所...转载 2019-06-04 13:49:53 · 867 阅读 · 1 评论 -
设备树和Platform架构--1--设备树基础
本小节讲解设备树相关的基础知识。参考链接:https://www.cnblogs.com/liuwanpeng/p/7421661.html设备数语法参考链接:https://elinux.org/Device_Tree_Usage设备树(dts)是节点和属性的树型结构。属性即为键-值对,节点包含子节点和属性描述上图属性结构的示例dts为:##################...原创 2019-05-30 09:24:25 · 1520 阅读 · 0 评论 -
设备树和Platform架构--3--kernel解析设备树(dtb----device_node)
参考:https://blog.csdn.net/thisway_diy/article/details/84336817https://blog.csdn.net/woyimibayi/article/details/775747361 概述Linux使用设备树完成3个目的:(1)识别machine(platform identification);(2)运行信息提取与管...原创 2019-06-04 10:19:15 · 2672 阅读 · 0 评论 -
设备树和Platform架构--4--platform bus概述及其初始化
1 概述1.1 platform(平台)总线出现背景 Platform总线是Linux设备驱动模型为了保持设备驱动的统一性而虚拟出来的总线。因为对于usb设备、i2c设备、pci设备、spi设备等等,他们与cpu的通信都是直接挂在相应的总线下面与cpu进行数据交互的,但是在嵌入式系统当中,并不是所有的设备都能够归属于这些常见的总线,在嵌入式系统里面,SoC系统中集成的独立的外设控制器...原创 2019-06-12 09:00:02 · 3572 阅读 · 0 评论 -
设备树和Platform架构--6-platform_driver及match
1 概述(1)Linux设备模型使用了三个数据结构分别来描述总线、设备和驱动。所有的设备和对应的驱动都必须挂载在某一个总线上,通过总线,可以绑定设备和驱动。这个属于分离的思想,将设备和驱动分开管理。(2)Platform总线仅仅时诸多总线中的一种。platform总线的设计初衷:见《设备树和Platform架构--4--platform bus概述及其初始化》(3)在设备树为引入到li...原创 2019-06-13 10:15:46 · 909 阅读 · 1 评论 -
设备树和Platform架构--5--platform_device创建
platform_device的建立包含两种方式:(1)在内核初始化时通过device_node转换为platform_device,这种是最新的实现方式,基于设备树,在内核初始化时将设备树中的节点转化为platform_device;(2)使用platform_device_register注册platform_device;1 关键数据结构体struct platfor...原创 2019-06-30 11:26:55 · 7859 阅读 · 0 评论 -
ARM存储:高速缓冲存储器Cache
转载自:https://www.eefocus.com/embedded/323218/p1当第一代RISC微处理器刚出现时,标准存储器元件的速度比当时微处理器的速度快。很快,半导体工艺技术的进展被用来提高微处理器的速度。标准DRAM部件虽然也快了一些,但其发展的主要精力则放在提高存储容量上。 1980年,典型DRAM部件的容量为4KB。1981年和1982年开发出了16KB芯片。这些部...转载 2019-10-08 11:08:00 · 2127 阅读 · 0 评论 -
ARM存储:存储保护单元MPU
一些嵌入式系 统使用多任务的操作和控制。这些系统必须提供一种机制来保证正在运行的任务不破坏其他任务的操作。即要防止系统资源和其他一些任务不受非法访问。要达到这 一目的通常有软件保护和硬件保护两种途径。这里软件保护是指仅靠软件来保护系统资源。系统中无保护硬件或硬件没启动。在多任务的系统中,通常要运行操作系 统来达到任务间同步与通信。所以,这种软件的资源保护通常由操作系统来完成。但这种通过软件来协调任...转载 2019-10-09 09:55:34 · 4800 阅读 · 0 评论 -
嵌入式操作系统---打印函数(printf/sprintf)的实现
格式化输出函数:printf/sprintf/fprintf/snprintf等等一、打印函数简介作用:将“给定的内容”按照“指定的格式”输出到“指定目标内”。打印函数的基本格式:char print_buf[BUF_SIZE];void printf(const char *fmt, ...){ va_list ap;//定义一个指针变量 unsigned ...原创 2018-03-31 23:22:28 · 5995 阅读 · 1 评论 -
vim 常用命令
only record1 打开终端:ctl+alt+t:打开一个终端ctrl+shift+t ,:在同一个窗口中打开多个终端Alt+1,就会切换到第一个终端,按Alt+2,就会切换到第2个终端,Alt+n,对应的就会切换到第n个终端。2 安装CTAGSsudo apt-get install ctags->如果你的vim有使用echofunc插件来显示函数的参数定义, 那么在...原创 2019-05-29 21:59:38 · 291 阅读 · 0 评论 -
嵌入式操作系统---核间通讯之RingBuf
前言两个核(分为主核和从核)之间进行通讯,一般使用共享内存的形式进行。核间通讯的机制,是以共享内存为媒介,利用核间中断来通知对方。通过核间对象的句柄进行具体的访问和操作;(1)多个核进行核间通讯时,首先由一个核创建一个核间对象,另外一个核通过名称或索引定位到该对象的句柄,从而对核间通讯对象进行操作。(2)核间中断来通知对方,采用“硬件信号量”对资源进行临界保护,再利用操作系统的信号量使得核间任务的...原创 2018-04-07 10:44:41 · 9032 阅读 · 0 评论 -
嵌入式知识储备---死锁的形成与解决
一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争同一资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。二、死锁产生的原因1、系统资源竞争只有对不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。2、进程请求和释放资源的顺序不当进程在运行过程中,请求和释放资源的顺序...原创 2018-04-01 11:15:20 · 957 阅读 · 0 评论 -
嵌入式操作系统----BSP架构实现
在嵌入式系统中为了对外设进行统一管理,本文设计了一种简易的设备驱动管理架构。一、基本概念所谓设备驱动管理架构是指使用数组索引的方式对SOC片内外设进行统一的管理。基本原理:为每一种外设分配一个设备编号,功能函数通过设备编号索引相应的设备操作。 二、设备驱动管理架构结构体1、将SOC片内外设进行编号//设备编号,静态分配#define Device_Spi 1#define D...原创 2018-04-07 21:55:29 · 2566 阅读 · 0 评论 -
Linux开发环境搭建05---s3c2440最简BootLoader实现
一、JZ2440(S3C2440开发板)存储单元说明JZ2440的基本参数如下:SDRAM:64MB 0x3000 0000~ 0x3400 0000Nand Flash:256MB 0x0000 0000 ~ 0x1000 0000 二、最简BootLoader启动流程分析JZ2440开发板的启动分为Nor Flash启动和Nand Flash启动,这里以NandFlash启动为例进行说明...原创 2018-03-24 23:29:55 · 642 阅读 · 0 评论 -
嵌入式知识储备---边沿触发与电平触发的区别
1、边沿触发边沿触发包括上升沿触发和下降沿触发,边沿触发检测的是电平变化,高电平转低电平或低电平转高电平时,触发一次中断。边沿沿触发是锁存中断信号的,由D触发器记忆,即:若CPU来不及响应中断,外部中断信号撤消后,由于D触发器的记忆作用,消失的中断信号仍然有效,直到中断被响应并进入中断ISR,记忆的中断信号才会由硬件自动清除。2、电平触发电平触发分为高电平触发和低电平触发;电平触发需要手动清除中断...原创 2018-03-20 08:49:43 · 2481 阅读 · 0 评论 -
PCI-E基础知识学习
PCIE特点:(1)2种路由方式:基于地址的路由方式、基于ID(BDFR)的路由方式(2)2种数据发送方式:Posted方式和No-Posted方式;(3)多种总线事务:配置读写、内存读写、IO读写、消息一、PCIe IP初始化主要完成工作:链路训练及初始化、PCIe IP初始化1、链路训练(1)基本概念1)PCIe链路结构: 一个Lane由收发2个方向组成...原创 2018-12-21 17:24:38 · 12439 阅读 · 3 评论 -
TCP/IP协议之ICMP协议
一、定义ICMP协议(Internet Control Message Protocol)是Internet控制消息协议,用于在IP主机、路由器之间传递控制消息。这些控制消息虽然不是用户数据,但是,对于保证用户数据的正确传输有着重要的作用。二、特点1、ICMP出现的背景IP协议完成了数据在各主机间的递交,但是,IP协议是一种无连接的不可靠的数据交付,IP协议不提供任务错误校验和恢复机制。因此,设计...原创 2018-03-11 23:30:30 · 11161 阅读 · 0 评论