![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM9嵌入式Linux开发
嵌入式linux开发入门.
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
求佛_ce123
专注于嵌入式软件开发
展开
-
ARM9嵌入式Linux开发-嵌入式GUI开发
GUI的一般架构图形用户界面GUI(Graphics User Interface)是迄今为止计算机系统中最为成熟的人机交互技术。一个好的图形用户界面的设计不仅要考虑到具体硬件环境的限制,而且还要考虑到用户的喜好等。由于图形用户界面的引入主要是从用户角度出发的,因此用户自身的主观感受对图形用户界面的评价占了很大比重,比如,易用性、直观性、友好性,等等。另外,从纯技术的角度看,仍然也会有一些标准需要考虑,比如,跨平台性、对硬件的要求等。在嵌入式系统开发和应用中,我们所考虑的问题主要集中在图形用户界面对原创 2020-08-09 23:17:27 · 1278 阅读 · 0 评论 -
ARM9嵌入式Linux开发-FrameBuff和LCD驱动移植
FrameBuffFrameBuffer介绍FrameBuffer直译就是,帧缓冲。 Frame(帧):所看到的屏幕上的图像,或者在一个窗口中的图像,就叫一帧。 Buffer(缓冲):一段RAM,用来暂存图像数据,这些数据会被直接写入到显示设备。 帧缓冲就相当于图形操作和图像输出中间的一个介质,将程序对图形数据的处理操作反馈到显示输出上。LCDC是将系统需要显示的数据经过处理后输出到LCD显示驱动器的液晶显示控制模块 ,在用户初始化配置后,LCDC将自动进行读取数据、缓存数据、处理原创 2020-08-02 17:04:18 · 1169 阅读 · 1 评论 -
ARM9嵌入式Linux开发-内存与IO操作
Linux内存管理地址类型用户虚拟地址用户空间程序所能看到的常规地址 每个进程都有自己的虚拟地址空间物理地址CPU使用的是物理地址,在CPU的地址信号线上产生的就是物理地址。总线地址总线地址,顾名思义,是与总线相关的,就是总线的地址线或在地址周期上产生的信号。外设使用的是总线地址。基于DMA的硬件使用总线地址而非物理地址。该地址在外围总线和内存之间使用 它实现总线和主内存之间的重新映射 通常它们与处理器使用的物理地址相同Linux采用虚拟内存管理技术,使得每个进程都原创 2020-07-26 21:45:48 · 628 阅读 · 0 评论 -
ARM9嵌入式Linux开发-Linux设备驱动的IO操作
字符设备的I/O模型一个字符设备的主要功能是用来实现I/O操作,反映到应用程序中就是进行读/写等相关的操作。在对一个设备进行读写操作时,由于设备在实际的操作中响应速速各不相同,因此数据并不总是在任何时候都可用:对于读操作来说,也许请求的数据还没有到达设备的缓冲区; 对于写操作来说,应用层传递过来的数据也许不能一下子全部放进设备的缓冲区。此时对读写操作来说,要么放弃等待直到返回一个错误码给上层,要么让发起读写操作的进程进入等待状态直到数据可用为止。根据不用的需求和使用场景,Linux内核支持几原创 2020-07-19 08:07:00 · 619 阅读 · 0 评论 -
ARM9嵌入式Linux开发-并发控制、中断处理
并发控制并态、竞态和临界区并发(concurrency)指的是多个执行单元同时、并行被执行。 并发的执行单元对共享资源(硬件资源、全局变量、静态变量等)的访问很容易导致竞态(race condition)。 访问共享资源的代码区域成为临界区(critical sections),临界区必须用某种互斥机制加以保护。 造成竞态的主要原因: 对称多处理器(SMP) (SMP是一个紧耦合、共享存储的系统模型。特点是多个CPU使用共同的系统总线,可以访问共同的外设和存储器。) 进程调度与抢占(Li原创 2020-07-12 07:52:53 · 407 阅读 · 0 评论 -
ARM9嵌入式Linux开发-Linux设备管理和驱动开发基础
设备驱动概述Linux设备分类Linux系统的设备分为三类:字符设备、块设备和网络设备: (1)字符设备通常指像普通文件或字节流一样,以字节为单位输入输出数据的设备,如并口设备、虚拟控制台等。字符设备可以通过设备文件节点访问,它与普通文件之间的区别在于普通文件可以被随机访问(可以前后移动访问指针),而大多数字符设备只能提供顺序访问,因为对它们的访问不会被系统所缓存。但也有例外,例如帧缓存(FrameBuffer)是一个可以被随机访问的字符设备。(2)块设备通常指一些需要以块为单位随机读..原创 2020-07-05 06:50:51 · 561 阅读 · 0 评论 -
ARM9嵌入式Linux开发-构建嵌入式Linux根文件系统
安装BusyBox在主机上新建一个目录,比如myroot,用于存放开发板的根文件系统。编译安装后BusyBox,将其中_install中的bin、sbin目录和linuxrc复制到myroot中。linuxrc、bin和sbin中所有命令都是bin/BusyBox的符号链接。构建etc目录init进程根据/etc/inittab文件创建其他子进程,比如调用脚本文件配置IP地址,挂载其他文件系统,启动shell和应用程序等。 etc目录中的文件主要取决于要运行的程序,在本文章中是创...原创 2020-06-28 22:43:27 · 455 阅读 · 0 评论 -
ARM9嵌入式Linux开发-嵌入式Linux根文件系统概述
Linux中一切皆文件! 是指:在Linux系统中,各个部分都可把它看成是一个文件,包括了所有的硬盘分区、目录、软盘、CD-ROM光盘和其他存储介质,以及显示器和打印机等硬件设备都可被看成一个文件。 从本质上而言,用户的一切工作就是对文件的操作。嵌入式Linux文件系统嵌入式文件系统的需求分析文件系统是指在一个物理设备上的任何文件组织和目录,它构成了Linux系统上所有数据的基础,Linux程序、库、系统文件和用户文件都驻留其中,并向用户或程序提供一个使用文件的统一界面,从而能...原创 2020-06-20 16:28:12 · 536 阅读 · 0 评论 -
ARM9嵌入式Linux开发-基于S3C2440的Linux内核移植
概述所谓移植就是把程序代码从一种运行环境转移到另外一种运行环境,主要是从一种硬件平台转移到另外一种硬件平台上。由于开发板硬件的变化,内核移植是嵌入式linux系统中最常见的一项工作。内核移植主要是修改跟硬件平台相关的代码,添加驱动,一般不涉及linux内核通用的程序。和体系结构相关的代码在arch目录下按照不同的体系结构管理。移植Linux内核需要熟悉内核的目录结构、启动流程以及裁剪、配置并编译内核的方法,最终将编译好的内核下载到开发板上运行起来。将Linux运行在S3C2440上,即称为Lin原创 2020-06-13 19:13:39 · 767 阅读 · 0 评论 -
ARM9嵌入式Linux开发-基于S3C2440的Linux启动概述
架构/开发板相关的引导过程我们要将Linux内核移植到S3C2440(arm9)平台上,和移植U-Boot一样,在移植Linux内核之前,我们先了解Linux内核的启动过程,我们这里以S3C2440平台为例。 典型的内核映像是zImage,包含自引导程序和压缩的vmlinux两部分。启动过程也就是解压和启动vmlinux的过程。我们主要讲解vmlinux的启动过程。对于其他格式的内核,比如zImage、bzImage等,它们都要进行自解压得到vmlinux,然后执行vmlinux的启动过程。...原创 2020-06-07 17:22:40 · 626 阅读 · 2 评论 -
ARM9嵌入式Linux开发-Linux基础知识
目录1 Linux简介1.1 Linux的内核版本1.2 Linux的发展历史1.3 Linux的发行版本1.4 Linux内核源码目录结构2 Linux内核的配置和编译2.1 Linux的配置2.2 Linux内核的编译2.2.1 Linux的Makefile体系2.2.2 Linux内核文件编译2.2.3 Makefile如何决定编译哪些文件2.3.4 Makefile是怎样编译这些文件的?2.3.5 Makefile是怎样连接这些文件2...原创 2020-05-31 07:11:19 · 804 阅读 · 0 评论 -
ARM9嵌入式Linux开发-U-Boot移植
1 为什么需要对U-Boot做移植BootLoader依赖于具体的嵌入式板级设备的配置。每种不同的CPU体系结构都有不同的BootLoader。除了依赖于CPU的体系结构外,BootLoader 还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。这也就是说,对于两块不同的开发板而言,即使它们是基于同一种CPU而构建的,但如果他们的硬件资源或配置不一致的话,要想在一块开发板上运行的BootLoader程序也能在另一块板子上运行,还是需要作修改。2 移植关键技术2.1 U原创 2020-05-24 07:16:32 · 649 阅读 · 0 评论 -
ARM9嵌入式Linux开发-U-Boot分析
目录1 再讲系统启动与BootLoader2 U-Boot简介3 U-Boot代码分析3.1 获取U-Boot源码3.2 U-Boot源码结构3.3 U-Boot配置3.4 U-Boot编译3.5 U-Boot连接3.5.1 lds文件简介3.5.2 U-Boot.lds的分析3.6 U-Boot启动过程源码分析4 U-Boot引导操作系统分析4.1 U-Boot命令的基本格式和执行过程4.2引导Linux4.2.1 mkimage简介4.2.原创 2020-05-17 16:30:17 · 715 阅读 · 0 评论 -
ARM9嵌入式Linux开发-嵌入式系统的Boot Loader技术
ARM9嵌入式系统学习原创 2020-05-10 06:23:54 · 550 阅读 · 0 评论 -
ARM9嵌入式Linux开发-LCD
目录1基础知识1.1 LCD显示原理1.2 LCD的分类1.2.1被动矩阵式LCD1.2.2 主动矩阵式LCD1.3 LCD接口2 S3C2440 LCD控制器介绍2.1 S3C2440 LCD控制器的特性与结构2.2 图像显示的原理2.3 对LCD的操作2.3.1 帧时序2.3.2 行时序2.3.3图像数据的存储2.4 LCD控制...原创 2020-05-02 21:14:15 · 615 阅读 · 0 评论 -
ARM9嵌入式Linux开发-ADC和触摸屏
目录1 S3C2440 ADC和触摸屏接口概述2 S3C2440 ADC接口的使用方法3 S3C2440触摸屏接口3.1 电阻触摸屏原理3.2 S3C2440触摸屏控制器4 S3C2440 ADC和触摸屏编程实例1 S3C2440 ADC和触摸屏接口概述S3C2440的CMOS模数转换器可以接受8个通道的模拟信号输入,并将他们转换为10位的二进制数据。在2.5...原创 2020-04-26 20:58:32 · 616 阅读 · 0 评论 -
ARM9嵌入式Linux开发-SPI总线接口
目录1 SPI总线协议介绍1.1技术性能1.2接口定义1.3内部结构1.4时钟极性和时钟相位1.5传输时序1.6数据传输1.7优缺点2 S3C2440 SPI控制器2.1 简介2.2 SPI接口特性2.3 SPI接口操作2.4 传输格式:2.5 接口控制寄存器:SPI控制寄存器(SPICONn)SPI状态寄存器(S...原创 2020-04-18 09:11:58 · 622 阅读 · 0 评论 -
ARM9嵌入式Linux开发-I2C接口
目录1 I2C协议1.1 简介1.2.信号类型①开始信号(S)②结束信号(P)③响应信号(ACK)1.3 数据传输格式2.1 I2C总线控制器介绍2.2寄存器设置简介IICCON寄存器IICSTAT寄存器IICADD寄存器IICDS寄存器2.3 S3C2440 I2C总线操作方法2.3.1.启动或者恢复I2C传输2.3.2....原创 2020-04-12 11:31:54 · 418 阅读 · 0 评论 -
ARM9嵌入式Linux开发-通用异步收发器UART
目录1Uart原理1.1简介1.2数据传输流程2、S3C2440的UART2.1特性2.2寄存器设置1)UART通道管脚设为UART功能2)UBRDIVn寄存器:设置波特率3)ULCONn寄存器:设置传输格式4)UCONn寄存器5)UFCONn寄存器、UFSTATn寄存器6)UMCONn寄存器、UMSTATn寄存器7)UTRSTATn...原创 2020-04-05 16:15:59 · 354 阅读 · 0 评论 -
ARM9嵌入式Linux开发-系统时钟和定时器
1S3C2440时钟体系1.1 简介s3c2440的时钟控制逻辑既可以外接晶振,然后通过内部电路产生时钟源,也可以直接外接提供的时钟源,它们通过引脚的设置来选择。时钟控制逻辑给整个芯片提供3种时钟:FCLK用于CPU核心,HCLK用于AHB总线上的设备,比如CPU核、存储控制器、中断控制器、LCD控制器、DMA和USB主机模块等,PCLK用于APB总线上的设备,比如watchdog、II...原创 2020-03-29 07:22:21 · 738 阅读 · 0 评论 -
ARM9嵌入式Linux开发-中断控制器
目录1 S3C2440中断体系结构1.1 ARM体系CPU的7种工作模式1.2 ARM体系的CPU有以下两个工作状态1.3ARM状态下各工作模式的寄存器1.4 总结2 S3C2440中断控制器2.1查询方式2.2中断方式2.3 S3C2440的中断控制器结构2.4中断产生流程2.5中断步骤2.6 中断寄存器设置1)SUBSRCPND寄存器...原创 2020-03-22 14:05:00 · 420 阅读 · 0 评论 -
ARM9嵌入式Linux开发-NADN FLASH控制器
目录1 NAND FLASH1.1Flash简介1.2NOR与NAND的区别1)性能比较2)接口差别3)容量和成本1.3NAND FLAHS(K9F2G08UXA)的物理构成1.4 NAND FLAHS(K9F2G08UXA)的结构框图1.5 NAND FLAHS(K9F2G08UXA)存储单元组织结构图1.6 NAND FLAHS(K9F2G08UXA)...原创 2020-03-15 08:04:57 · 429 阅读 · 0 评论 -
ARM9嵌入式Linux开发-内存管理单元MMU
内存管理单元(Memory ManagerUnit)简称MMU,它负责将虚拟地址转换成物理地址,然后传给存储管理器进行寻址。现代的多用户多进程操作系统通过MMU使各个用户进程都有自己的独立的地址空间:地址映射功能功能使的个进程拥有“看起来”一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。举一个现实生活中的例子:甲同学(进程甲)去一个图书管理员那儿去借名为“...原创 2020-03-08 08:40:57 · 483 阅读 · 0 评论 -
ARM9嵌入式Linux开发-存储控制器
目录1.硬件简介2 S3C2440的地址空间分布2.1存储控制器的地址空间分布2.2特殊功能寄存器地址分布3使用存储控制器访问外设的原理4 SDRAM简介4.1SDRAM4.2SDRAM与CPU的相连5 存储控制器的寄存器的配置1)位宽和等待控制寄存器BWSCON2)BANK控制寄存器BANKCONx(x为0-5)3)BANK控制寄存器BANKCON...原创 2020-03-01 22:53:22 · 542 阅读 · 0 评论 -
ARM9嵌入式Linux开发-GPIO接口
1原创 2020-02-21 18:29:06 · 875 阅读 · 0 评论 -
ARM9嵌入式Linux开发-ARM汇编程序设计基础
目录1.1 ARM源文件格式1.2 ARM指令集1.2.1跳转指令1.2.2数据处理指令1.2.3程序状态寄存器处理指令1.2.4批量数据加载/存储指令1.2.5协处理器指令1.3 ARM汇编规范1.3.1 ARM汇编语句格式1.3.2ARM汇编中的常用符号1.3.3汇编语言程序中的表达式和运算符1.4 ARM汇编语言的程序结构1.5 ARM汇编...原创 2020-02-11 11:23:04 · 628 阅读 · 0 评论 -
ARM9嵌入式Linux开发-嵌入式Linux开发环境构建
目录1、嵌入式Linux开发简介1.1嵌入式系统1.2嵌入式操作系统简介1.2.1嵌入式操作系统的发展1.2.2几种代表性嵌入式操作系统1.3嵌入式Linux简介2、搭建嵌入式Linux开发环境2.1基本概念主机系统和目标系统交叉编译2.2软件安装及使用3、基本的Makefile语法3.1最基本的Makefile文件3.2MakeFile简介...原创 2020-02-05 22:18:01 · 945 阅读 · 3 评论 -
ARM9嵌入式Linux开发-开篇
将自己之前学习嵌入式开发的一些资料整理出来。这些文章适合入门,文章中涉及的一些工具比较老(暂时不去更新了),但不影响对嵌入式开发技术本质的思考和理解。博主目前的工作主要系统框架和中间件的开发,感兴趣的朋友可以一起进行讨论和交流。当今社会,嵌入式系统已经渗透到人们工作、生活中的各个领域。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,...原创 2020-02-03 13:35:47 · 874 阅读 · 2 评论