
专注于ARM+linux开发
文章平均质量分 65
深入理解S3C2440的体系结构以及外围接口,记录自己的ARM+linux开发过程。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
求佛_ce123
专注于嵌入式软件开发
展开
-
mount --bind妙用
在嵌入式系统中,为了系统的稳定性,常将文件系统只读挂载,避免在写文件系统的情况出现异常,导致文件系统破坏.但不少程序默认会往/etc目录写入数据,可以采用mount --bing将一个可读写的目录映射到/etc目录下面,这样既保证了rootfs的稳定性,又不用修改程序的默认行为.#move etc to usrdataMoveEtcToUsrdata() { mkdir -p /usrdata/etc if [ ! -f /usrdata/bind_etc_flag ];then..原创 2021-03-13 09:31:12 · 1006 阅读 · 0 评论 -
运行地址和加载地址
运行地址和加载地址 在连接目标代码时,会提到运行地址和加载地址。这两者有什么区别呢? 加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如果程序是在ram里运行,但程序是存储在flash里,则运行地址指向ram,而加载地址是指向flash。代码一般是烧原创 2011-11-23 18:07:42 · 13886 阅读 · 5 评论 -
ARM汇编中的标号
ARM汇编中的标号 标号(LABEL)是为一组机器指令所起名字,表示程序中的指令或者数据地址的符号。标号可有可无,只有当需要用符号地址来访问该语句时,才给此语句赋予标号。通过在目标地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址。标号是程序目标标志,总是和某地址相联系,供转移或循环指令控制转移使用。 标号是编译程序使用的,也就是说程序中最后生成的代码中原创 2012-01-06 16:11:18 · 6008 阅读 · 0 评论 -
处理器和存储器的错位相连
处理器和存储器的错位相连 对于具体存储器而言,它的位宽是一定的,所谓位宽,指的是“读/写操作时,最小的数据单元”──别说最小单元是“位”,一般存储器上没有单独的“位操作”,修改位时通过把整个字节、字或双字读出来、修改,再回写。对于处理器来说,一个地址对应的是一个字节(8位),也就是说处理器的地址线对应的最小数据单元是字节。 这里需要注意的是,原创 2011-12-18 14:28:56 · 3417 阅读 · 0 评论 -
ARM汇编中LDR伪指令和LDR指令
ARM汇编中ldr伪指令和ldr指令 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:ldr r0, 0x12345678就是把0x12345678这个地址中的值存放到r0中。而mov不能实现这个功能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个原创 2012-01-07 13:54:44 · 26443 阅读 · 8 评论 -
Ubuntu11.10编译内核:make xconfig错误
Ubuntu11.10编译内核:make xconfig错误问题:root@czu:~/桌面/linux-2.6.30.4# make xconfig CHECK qt *原创 2012-02-09 21:16:24 · 5787 阅读 · 1 评论 -
内核编译错误: make: *** [.tmp_vmlinux1] Error 1
若编译内核出现如下情况:WARNING: modpost: Found 1 section mismatch(es).To see full details build your kernel with:'make CONFIG_DEBUG_SECTION_MISMATCH=y' GEN .version CHK include/linux/compile.h UPD原创 2012-02-09 22:05:19 · 11837 阅读 · 0 评论 -
Linux系统对IO端口和IO内存的管理
Linux系统对IO端口和IO内存的管理一、I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。二、IO内存原创 2012-01-16 11:03:26 · 14232 阅读 · 6 评论 -
make clean、make mrproer 以及make distclean的区别
make clean、make mrproer 以及make distclean的区别解压内核源码包后, 到内核源代码目录树的顶层目录, 执行# make helpCleaning targets: clean - Remove most generated files but keep the config and enough bui原创 2012-02-06 23:18:31 · 9797 阅读 · 9 评论 -
对S3C2440裸板程序设计(无操作系统)的抽象
对S3C2440裸板程序设计(无操作系统)的抽象 在嵌入式领域中,几乎所有的设备控制和各种协议控制都在同一个嵌入式CPU当中,非常有利于对CPU Core和设备进行抽象。如果能对CPU Core和设备的各种控制进行抽象,人们在移植OS或者开发驱动程序时就没有必要对CPU进行非常深入的了解,不必要了解某个寄存器的某个位是控制什么的,也没有必要了解怎样初始化某个控制寄存器等等。原创 2012-02-10 21:22:17 · 4936 阅读 · 0 评论 -
深入分析S3C2440启动代码中大小端问题
深入分析S3C2440启动代码中大小端问题一、ADS1.2中关于大小端的设置以及对编译后的代码的影响下面是一段代码在线段模式下编译,生成的二进制文件的内容大端模式下编译,生成二进制文件的内容根据上面的内容可以看出:它们的字节序是相反的,也就是说,ADS1.2中对大小端的设置会影响最终生成的二进制文件的字节序。二、S3C2440启动代码中与大小管相关的代码Option.inc中相关代码 GBLL原创 2012-02-17 22:03:12 · 6514 阅读 · 7 评论 -
S3C2440启动代码中应用程序执行环境的初始化
S3C2440启动代码中应用程序执行环境的初始化一、基础知识 我们编写的源文件(.c 或.s)经过ARM 编译器的编译生成ELF 格式的目标文件(后缀名为.o),目标文件经过ARM 连接器连接以后生成ELF 格式的映像文件(后缀名为.axf),此时的映像文件还包含一些调试信息,我们还需要通过fromelf 工具将其转换成适合在ROM 或RAM 中运行的二进制代码(后缀名为.bin原创 2012-02-19 11:38:24 · 6004 阅读 · 3 评论 -
ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析 ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。ldr r0, _startadr r0, _startldr r0, =_start_start:b _start编译的时候设置 RO 为 0x30000000,下面是反汇编的结果:原创 2012-02-22 20:09:26 · 9393 阅读 · 5 评论 -
基于状态机的简易RISC CPU设计
基于状态机的简易RISC CPU设计目录一、什么是CPU?二、RISC CPU结构1.时钟发生器2.指令寄存器3.累加器4.RISC CPU算术逻辑运算单元5.数据控制器6.状态控制器7.程序计数器8.地址多路器9.外围模块10.地址译码器a.RAMb.ROM三、RISC CPU中各部件的相互连接关系四、RISC CPU和它的外围电路五、RISC CPU的寻址方式和指令系统六、RISC CPU的操原创 2012-01-09 11:02:47 · 13304 阅读 · 1 评论 -
小议大小端模式对C语言的共用体结构的影响
小议大小端模式对C语言的共用体结构的影响1、一些问题问题1#include "stdio.h"union { int i; char ch[2];}key;main(){ key.i=65*256+66; printf("%c\t%c\n",key.ch[0],key.ch[1]);}答案是B A;为什么不是A B呢?原创 2011-12-25 20:39:28 · 8405 阅读 · 22 评论 -
小端模式与强制数据类型转换
小端模式与强制数据类型转换1.先从一个问题说开去C++数据类型转换的问题#include void main(){ int i=0xb62; char c; c=i; cout<<c<<endl;}这里为什么输出的是b?2.先检测一下我们所使用的电脑的CPU的字节序版本一(有问题,结果无论如何都是34,不能说明34是高地址的还是低地址的原创 2011-12-19 23:02:45 · 11872 阅读 · 11 评论 -
S3C2440时钟详解
S3C2440的时钟ADS1.2中关于时钟的C代码:ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);ChangeClockDivider(key, 12); 1)FLCK、HCLK和PCLK的关系 S3C2440有三个时钟FLCK、HCLK和PCLK。s3原创 2011-12-03 01:33:21 · 4328 阅读 · 3 评论 -
基于微程序设计的嵌入式CISC CPU模型的实现
基于微程序设计的嵌入式CISC CPU模型的实现一、课程设计的题目 二、嵌入式CISC模型机数据通路框图 三、微程序控制器(CISC模型机)的逻辑结构框图 四、模型机的指令系统和指令格式 五、机器指令的微程序流程图 六、嵌入式CISC模型机的顶层电路图 七、汇编语言源程序 八、机器语言源程序 九、微命令格式和微指令代码表 十、仿真波形图及其分析 十一、故原创 2011-11-22 14:54:15 · 10369 阅读 · 34 评论 -
接口设计
接口设计什么是接口?接口是CPU和外设之间的连接设备,用于缓存和转发数据。为什么需要接口?(1)解决主机CPU和外围设备之间的时序配合和通信联络问题 主机的CPU是高速处理器件,比如8086-1的主频为10MHz,1个时钟周期仅为100ns,一个最基本的总线周期为400ns。而外围设备的工作速度比CPU的速度慢得多。如常规外围设备中的电传原创 2011-11-21 14:25:42 · 7185 阅读 · 2 评论 -
DS-5笔记(Gnometris)
If you are working on an EB-A8 RTSM model the debugger automatically boots ARM Linux if required.Examples(DS-5自带的例子:非操作系统和Linux平台下的例子)DS-5 provides a selection of examples to help you get st原创 2011-07-14 14:26:15 · 6723 阅读 · 1 评论 -
DS-5简介
DS-5简介 1 DS-5 调试器... 3概述... 3DS-5 应用程序版... 3DS-5 Linux & 专业版... 45.5版本中的新功能... 4主要特性... 4专业的端到端调试器... 4高级会话控制& 系统视图... 5非侵入式的跟踪分析... 5Linux 相关... 6高效率特征... 6兼容的调试工具... 7DST原创 2011-07-14 20:46:31 · 7629 阅读 · 1 评论 -
ARM DS-5入门之 概述
关于 DS-5 DS- 5是基于Linux系统和裸机嵌入式系统,涵盖了从启动代码和内核移植,应用程序和裸机调试的各个阶段,专业的软件开发解决方案。它还包括性能分析。DS-5 包括: l DS-5 Debugger. l翻译 2011-07-30 01:52:18 · 14962 阅读 · 4 评论 -
S3C2440的SPI控制器
S3C2440包含有两个串行外围设备接口(SPI口),每个SPI口都有两个分别用于发送和接收的8位移位寄存器,在一次SPI通信当中数据被同步发送(串行移出)和接收(串行移入)。8位串行数据的速率由相关的控制寄存器的内容决定。如果只想发送,接收到的是一些虚拟的数据。另外,如果只想接收,发送的数据也可以是一些虚拟的“1”。结构框图如下:1、SPI接口特性:与SPI接口协议v原创 2011-11-01 00:00:25 · 10458 阅读 · 0 评论 -
典型的SPI控制器的结构
典型的SPI控制器的结构 一个典型的SPI控制器的结构,主要又波特率发生器、主控逻辑、收发缓冲、控制部分等几大部分组成。如下图所示:原创 2011-10-24 14:37:02 · 8277 阅读 · 0 评论 -
详解SPI中的极性CPOL和相位CPHA
详解SPI中的极性CPOL和相位CPHA SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。即一个SPI的Master通过SPI与一个从设备,即上述的那些Flash,ADC等,进行通讯。而主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量原创 2011-11-01 08:28:36 · 56421 阅读 · 39 评论 -
单片机软件模拟SPI接口—加深理解SPI总线协议
单片机软件模拟SPI接口—加深理解SPI总线协议 SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准,目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,EEPROM,FlashROM,A/D转换器、D/原创 2011-11-01 00:01:04 · 55924 阅读 · 7 评论 -
SPI时序详解
SPI时序详解 SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。原创 2011-10-23 20:10:54 · 75757 阅读 · 8 评论 -
关于I2C和SPI总线协议
关于I2C和SPI总线协议IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了原创 2011-10-16 23:24:44 · 45687 阅读 · 23 评论 -
SPI总线协议介绍
SPI总线协议介绍一、技术性能 SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平原创 2011-10-23 11:11:16 · 49631 阅读 · 21 评论 -
理解嵌入式开发中的一些硬件相关的概念
理解嵌入式开发中的一些硬件相关的概念 做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。电平(Level) 在数字电路中,分为高电平和低电平,分别用1和0表示。一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0(其实,还有另一原创 2011-11-15 15:10:47 · 7359 阅读 · 9 评论 -
I/O端口地址译码
I/O端口地址译码 I/O端口是接口电路中能被CPU直接访问的寄存器。访问端口就是访问接口电路中的寄存器。一个接口电路(外设)通常拥有不止一个端口,如命令口、状态口、数据口等。端口地址编码形式有统一编制和独立编制两种方式。常用的为独立编制形式,即外设端口地址不同内存地址一起统一编址。并配有专门的I/O指令:IN/OUT(不同于内存的mov指令)。端口地址译码即根据地址识别端口(接口原创 2011-11-14 08:22:35 · 11734 阅读 · 1 评论 -
详解大端模式和小端模式
详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令原创 2011-11-16 20:21:29 · 193828 阅读 · 77 评论 -
基于浏览器的Linux
QEMU模拟器项目创始人Fabrice Bellard开发了在JavaScript中运行的模拟器,允许用户在浏览器上(支持Firefox 4和Google Chrome 11)启动Linux。现在,另一位开发者修改了Fabrice Bellard的JS/Linux,允许模翻译 2011-10-13 00:31:28 · 19934 阅读 · 41 评论 -
浅谈S3C2440的中断寄存器及中断过程
浅谈S3C2440的中断寄存器及中断过程 S3C2440一共有60个中断源,其中有15个子中断源,它们与SUBSRCPND寄存器中的每一位相对应,其他45个中断源与SRCPND中的每一位相对应。要注意的是EINT4~7对应的是同一位SRCPND[4],而EINT8~23对应的也是SRCPND[5]一位。1 S3C2440的中断寄存器 中断分两大原创 2011-11-08 15:40:06 · 9404 阅读 · 15 评论 -
为什么我们需要这么多的寻址方式
为什么我们需要这么多的寻址方式 寻找操作数可以通过直接给的方式(立即寻址)和直接给出数所在单元地址的方式(直接寻址),这就够了吗?看这个问题,要求从30H单元开始,取20个数,分别送入A累加器。就我们目前掌握的办法而言,要从30H单元取数,就用MOV A,30H,那么下一个数呢?是31H单元的,怎么取呢?还是只能用MOV A,31H,那么20个数,不是得20条指令才能写原创 2011-11-02 00:16:39 · 6220 阅读 · 3 评论 -
I2S音频总线学习(一)数字音频技术
IIS音频总线学习(一)数字音频技术一、声音的基本概念 声音是通过一定介质传播的连续的波。图1 声波重要指标:振幅:音量的大小周期:重复出现的时间间隔频率:指信号每秒钟变化的次数声音按频率分类:图2 声音的频率(语音信号频率范围:300Hz-3kHz)声音的传播携带了信息,它是人类传播信息的一种主要媒体。 声音的三种类型:原创 2011-11-01 00:19:14 · 50919 阅读 · 10 评论 -
浅谈EABI和OABI
浅谈EABI和OABI引言 初学嵌入式linux开发的时候大家都用的工具链版本多是3.4.5或3.4.2,名字为arm-linux-gcc或arm-softfloat-linux-gnu-gcc,可突然有一天发现这几个版本的编译器无法编译最新的内核了,并且发现人们都换了工具链了(arm-none-linux-gnueabi-gcc)。于是也都换成了这个工具链,编译内核,制作原创 2011-11-01 19:02:24 · 6948 阅读 · 4 评论 -
【博文汇总】SPI总线学习
【博文汇总】SPI总线学习【SPI总线协议介绍】 简要的介绍了SPI协议的技术性能、总线结构、接口定义、物理内部结构、时钟极性和时钟相位、传输时序、数据传输以及优缺点。通过该文章能多SPI协议有一个基本的了解。【关于I2C和SPI总线协议】 这也是一篇很好的入门文章,讲解了SPI协议的历史和未来发展。最大的特点是和I2C协原创 2011-11-01 09:49:43 · 17702 阅读 · 7 评论 -
第一个ARM程序
;************************************************************** ;文件:program_5_1.s;简介:ARM初始化程序 ;************************************************************** IMPORT Main ;伪操作IMPORT告诉编译器Main不是在该文件中原创 2011-07-02 22:34:28 · 2934 阅读 · 0 评论 -
ARM Linux下访问GPIO端口
GPIO(GeneralPurpose Input/Output的缩写)就是芯片的引脚,引脚是可编程的可对引脚的工作模式进行设置:输入模式(检测输入信号),输出模式(输出0或1),高阻状态(常用于AD转换),还有禁止或允许上内部下拉电阻(上拉:管脚通过电阻接高电平,下拉:管脚通过电阻接地,也可以外部接上拉或下拉电阻),还有管脚复用等功能,即通过对内部寄存器的设置使引脚既可以工作在一般模式,作为普通原创 2011-07-02 22:25:57 · 10737 阅读 · 0 评论