嵌入式基础
文章平均质量分 60
庾志辉
这个作者很懒,什么都没留下…
展开
-
ARM中断源和中断过程分析
中断源分析中断分为两大类,由中断源来区分:内部中断,其中断源由内部外设提供。如:DMA/UART等外部中断,其中断源由外部请求中断。如:EINTn先来分析下59个中断源:35个内部中断源和24个外部请求中断源。(官方说是60个中断源)原创 2014-08-09 16:13:49 · 3532 阅读 · 0 评论 -
C/C++程序编译时和运行时内存区域分配
c程序内存分配区域问题。记得以前学《Unix高级环境编程》时书中有提到c程序内存分配问题。然后有次面试时,问到这个问题我根据书上的内容来回答的,面试官却说回答的对了一半,当时很纳闷怎么会对了一半呢。下面来解释下。 先来说下c程序编译内存分配: 1.栈区(stack):存放局部变量和参数,申请和释放都由编译器自动完成。 2.堆区(he原创 2014-08-09 17:56:30 · 4474 阅读 · 1 评论 -
bochs调试x86汇编
Bochs常用调试命令Bochs是非常好用的模拟器,命令也很多,不过最常用的其实总结起来也就包括几条,记住这些命令基本都可以满足调试需求了。1. 断点操作(1)设置断点:b 物理地址 例:b 0x7c00 在物理地址0x7c00处设置断点(2)查询目前已经设置过的断点:info break 2. 程序的执行(1)转载 2014-11-24 15:43:06 · 3340 阅读 · 0 评论 -
用C语言宏定义寄存器地址解释 和 关键字 volatile
#define GPFDAT (*(volatile unsigned long*)0x56000000)分析解释;以及,volatile关键字:别称易失变量:容易丢失的变量;因为编译器为了程序的效率,在编译时会进行一些优化。可有时候我们不希望对某些变量进行优化,所以在变量前加上个volatile关键字,编译器就不会对该变量进行优化了,而是老老实实到内存中再去读取数据。(优化了后可能是把该变量的值存放在某个临时的寄存器中,要用时,直接到寄存器中读取,因为寄存器读取数据比内存中要快很多)。原创 2014-08-03 12:16:23 · 9017 阅读 · 0 评论 -
Nand Flash和Nor Flash 启动区别
Nor Flash 中有单独的地址线,和数据线是分开的。读取数据时和一般的SRAM相近。而Nand Flash中地址线和数据线是共用的,所以要等程序运行后来控制分析是地址信息还是数据信息。 Nor Flash中有分配地址。开发板上一般外接SDRAM来作为大量的存储,2440板子上共有8banks,其中6个是ROM或者SRAM,其他2个还可以是SDRAM。前面七个banks起始地址是固定原创 2014-08-03 12:20:20 · 1028 阅读 · 0 评论 -
UART串口编程
基础知识:1.波特率:每秒传输的二进制位数,bps。2.UART用的是标准TTL/CMOS逻辑电平,可以通过MAX3232转换成RS-232逻辑电平。RxD/TxD数据线以位为最小数据传输单位。3.帧:有效传输单位,具有完整数据意义。里面包含:起始位,数据位,校验位,停止位。一帧数据可以有5-8个数据位,从最低位开始传输,传输前约定好原创 2014-08-09 16:52:19 · 5462 阅读 · 0 评论 -
uboot第一阶段start.s简单分析
下面是自己理解和查资料得出的一些解释。作为自己的笔记,里面还有些知识块不是理解非常透彻。希望指教。还有个这不是单纯的uboot ,而是一个移植的uboot,但是没看清楚,分析到后面发现有移植部分,想了下还是将错就错吧。设置中断向量表用globl来定义全局变量,因为这个中断变量在其他模块中也要用到。把中断标号赋值给pc,其实真正的中断服务子程序地址在下面再次定义。原创 2014-08-09 17:59:27 · 1201 阅读 · 0 评论 -
时钟频率详解和编程
晶振:其作用是产生原始的时钟频率,这个频率经过频率发生器的倍频或分频后就成了电脑中各种不同的总线频率;其本身不振荡但和外电路产生谐振。 一般来讲系统都会有2个锁相环。这里就拿三星的S3C2440来作为例子吧。S3C2440有2个锁相环(PLL--- phase locked loop),一个是MPLL,一个是UPLL;MPLL用于CPU及其他外围器件。UPLL用于USB提供48MHz.外部时钟原创 2014-08-09 16:47:18 · 3544 阅读 · 1 评论 -
系统位数和内存关系
以下系统位数都用32位来举例。 第一,8bit(位) == 1 byte(字节);1024 byte == 1 kb( kbyte)这是基础必须得知道。 第二,字是机器的字长,是对应二进制的长度。比如:32位系统,字就表示32位==4个字节。 第三,我们所说的系统位数其实是说的数据总线,就是cpu处理能力,强调的是数据的处理能力。32位系统每个周期就能处理32原创 2014-08-09 17:53:50 · 7260 阅读 · 0 评论 -
ARM的工作模式和中断流程
ARM体系结构中有七个工作模式:0b10000 usr 用户模式,一般的,唯一没有特权的模式,也是正常工作模式,不能切换到其他模式0b10001 FIQ 快中断模式,用于高速数据传输,快中断响应的工作模式0b10010 irq 中断模式,通用中断处理,一般中断响应的工作模式0b10011 supervisor 管理模式,操作系统保护模式,复位和软件中断响应的工作模式原创 2014-08-09 16:22:14 · 2274 阅读 · 0 评论 -
未决寄存器置1怎么区分是中断请求还是清中断
不管是SRCPND源未决寄存器清中断还是INTPND未决寄存器 清中断都是往里面置1。这让大家很疑惑,因为当中断请求发生时,也是往这些未决寄存器中置1。那么怎么来区分是中断请求还是清中断呢?? 查看了下s3c2440数据手册,上面只是说:“A。如果你从中断服务程序返回却没有清除该位,中断控制器将操作好像又有同一个中断源的中断请求到来。换言之,如果SRCPND的一个特原创 2014-08-09 16:16:38 · 2389 阅读 · 0 评论 -
ARM中断进入和退出分析
0x00复位(reset): 1 svc 复位引脚有效产生复位异常中断,程序跳转到子程序执行;复位情况加电,复位按键;直接跳转到复位中断服务子程序0x04未定义指令(undefined instruction):6 und0x08软件中断:用户自定义的中断指令,目的是为了获取到特权 6 svc0x0c指令预取中止 5 abt0x10数据访问中止 2原创 2014-08-09 16:01:25 · 3451 阅读 · 0 评论 -
最简单的,无登录帐号密码的samba配置
网上很多samba配置文件的分享,但是大多数比较繁琐,因为要设置帐号密码之类的。但是我仅仅是个人使用,要什么密码啊,只要能够在window和Linux之间传送文件就可以了,没必要那么麻烦。下面请看最简单的,不用帐号和密码的samba配置方法:第二步,修改配置文件:vim /etc/samba/smb.conf;(提醒下修改某个文件时最好先备份下,这是个不错的习惯)把[homes]和[privnters]等都注释掉(也就是把======Share Definitions========下面的的 语句全注释掉)原创 2014-11-29 16:59:10 · 21853 阅读 · 1 评论