自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (7)
  • 收藏
  • 关注

原创 Exynos4412中断管理控制器工作流程——以按键中断为例

以下是流程

2019-06-26 16:36:16 490

原创 网络编程多路复用--EPOLL实现一对一聊天

一,IO复用几种方法的比较select, poll, epoll都可以实现套接字I/O复用,但select这个函数是有缺陷的,主要体现在两个方面:最大并发数限制,因为一个进程所打开的FD(文件描述符)是有限制的,由FD_SETSIZE设置,默认值是1024,这是在<sys/select.h>中的一个常量,因此Select模型的最大并发数就被相应限制了,但是对于大多...

2019-05-13 17:08:23 536

原创 linux 系统调用fork() wait()

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;unistd.h&gt;/* linux 系统调用 wait() * 当用fork()创建子进程,子进程在退出后父进程没有调用wait * 就会产生僵尸进程. * * 下面是用fork循环创建多个子进程,在父进程里调用一次wait * 只能回收一个子进程. * * ...

2018-10-15 15:43:35 1981

原创 uboot中nandflash bbt创建过程

arm/lib/board.cboard_init_r(){……nand_init();env_relocate();……} common\env_common.cvoid env_relocate(void){……env_relocate_spec();……} common\env_nand.cvoid env_reloca...

2018-10-15 15:38:11 1269

原创 加深对ARM汇编中对stmfd和ldmfd的理解

AREA STMFD,CODE,READONLYENTRYCODE32STARTsub sp,sp,#4 ;经过此条语句过后,sp的值由原来的0变为了0xfffffffcmov r0,#0x1d ;将0x1d赋值给r0寄存器mov r1,#0x1c ;将0x1c赋值给r1寄存器stmfd sp!,{r0} ;将r0中的值压入堆栈,压入过程是,由于r0中的值为32位的,首先将sp减去4,将r0中的低...

2018-05-18 08:26:31 4884

原创 ARM汇编指令-STMFD和LDMFD

STMFD指令STMFD Rn{!},{reglist}{^}STMFD SP!,{R0-R7,LR} 对于这条指令伪代码的解释,网上是这么说的:SP = SP - 9×4;  address = SP;  for i = 0 to 7    Memory[address] = Ri;    address  = address+ 4;Memory[address] = LR;经过我在keil4的...

2018-05-18 08:25:52 1096

转载 arm寄存器之r14,r15

(1)PC是程序计数器,存储将要执行的指令地址(2)LR是链接寄存器,是ARM处理器中一个有特殊用途的寄存器,当调用函数时,返回地址即PC的值被保存到LR中(mov lr,pc)。(3)IR是指令寄存器,用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。区别:(1)IR是微体系结构概念(什么是微体系结构?就是程序员看不到,但硬件中确实存在的硬...

2018-05-18 08:24:56 3690

原创 对ARM堆栈的理解

堆栈严格来说应该叫做栈,栈(Stack)是限定仅在一端进行插入或删除操作的线性表。从栈顶的定义来看,栈顶的位置是可变的。空栈时,栈顶和栈底重合;满栈时,栈顶离栈底最远。ARM为堆栈提供了硬件支持,它使用一个专门的寄存器(堆栈指针)指向堆栈的栈顶。而且7种模式都有各自独立的堆栈指针,也就是有各自独立的堆栈空间。但这里的堆栈和uC/OS操作系统的任务堆栈又有区别,uC/OS的每个任务都有自己的堆栈,要...

2018-05-18 08:23:53 1014

转载 ARM满堆栈与空堆栈简明理解

初学ARM指令时,如果从字面上理解满堆栈和空堆栈很有可能会歪曲它们的意思。可以想象一下,“满堆栈”就是一个满的堆栈,不能再存储数据了;而“空堆栈”就是一个空的堆栈,没有被使用的堆栈,呵呵,这样理解的话那就错了。    实际上“满堆栈”和“空堆栈”确切的说应该是“满栈”或者是“空栈”,我们只是习惯了把栈叫做堆栈。而二者深层的意思是说的“位置”或者“地址”,而不是“堆栈”。如果叫“满位置”或者“空位置...

2018-05-18 08:21:43 4331 2

arm嵌入式系统基础教程

ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接 从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM 公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成 自己的ARM 微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM 公司的 授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低, 使产品更容易进入市场被消费者所接受,更具有竞争力。

2018-10-22

Makefile简单学习

使用 GCC 的命令行进行程序编译在单个文件下是比较方便的,当工程中的文件逐渐增多,甚至变得十分庞大的时候,使用 GCC 命令编译就会变得力不从心。Linux 中的 make 工具提供了一种管理工程的功能,可以方便的进行程序的编译,对更新的文件进行重编译

2018-10-22

Linux中断处理驱动程序编写

中断就是CPU正常运行期间,由于内、外部事件引起的CPU暂时停止正在运行的程序,去执行该内部事件或外部事件的引起的服务中去,服务执行完毕后再返回断点处继续执行的情形。这样的中断机制极大的提高了CPU运行效率。

2018-10-22

基于S3C2440 的Bootloader 的设计与实现

Boot loader( 引导加载程序) 是嵌入式系统开发的一个重要环节, 它把操作系统和硬件平台衔接起来, 对嵌入 式系统的后继软件开发十分重要。U- boot 是一个功能十分强大的Boot loader, 本文深入研究了U- boot 的运行原 理, 在基于以三星公司S3C2440 微处理器为核心的开发板为背景, 分析、探讨并且实现了基于U- boo t 的系统引导 加载程序的构建。

2018-10-22

u-boot-lds文件详解

对lds文件的结构以及格式进行了详细的分析,同时对uboot的lds进行了分析。

2018-10-22

u-boot-ok2440

基于飞凌OK2440III的u-boot移植,NOR,NAND都可以正常工作。

2018-10-22

2440-Uboot移植实验完整版

U-BOOT u-boot移植的具体步骤 移植实验,通过讲解UBOOT的工作原理,一步步进行移植。

2018-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除