嵌入式开发
文章平均质量分 95
小米拍客光
喜欢IT,喜欢技术,嗨起来~~~~~~~~~~~~~~
展开
-
Linux下静态IP地址的设置及TFTP服务的搭建
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。 一、在谈TFTP之前,先简单讲一下Linux网络配置,网络中最重原创 2016-06-18 23:41:56 · 419 阅读 · 0 评论 -
ARM 软中断指令SWI
前面我们学习ARM工作模式中,处理器模式切换可以通过软件控制进行切换,即修改CPSR模式位,但这是在特权模式下,当我们处于用户模式下,是没有权限实现模式转换的。若想实现模式切换,只能由另一种方法来实现,即通过外部中断或是异常处理过程进行切换。于是ARM指令集中提供了两条产生异常的指令,通过这两条指令可以用软件的方法实现异常,其中一个就是中断指令SWI 。 一、软件中断原创 2016-06-19 19:58:57 · 777 阅读 · 0 评论 -
Binutils工具集 解析
对于嵌入式系统开发,掌握相应的工具至关重要,它能使我们解决问题的效率大大提高。目前,可以说嵌入式系统的开发工具是GNU的天下,因为来自GNU的GCC编译器支持大量的目标处理器。除了GCC,还有一个非常重要的、同样来自于GNU的工具集(toolchain) —— binutils toolchain。这一工具集中存在的一些工具,可以说是我们开发和调试不可缺少的利器。 Binutils中的工具不少和G原创 2016-06-19 19:57:35 · 226 阅读 · 0 评论 -
关于gcc、glibc和binutils模块之间的关系
一、关于gcc、glibc和binutils模块之间的关系1、gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc++.so等。2、binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静原创 2016-06-19 19:56:21 · 318 阅读 · 0 评论 -
Exynos4412 Uboot 的使用与烧写
Uboot版本:u-boot-2013.01开发板:Exynos4412 本文主要是熟悉U-boot 的使用以及如何将Uboot 烧入Exynos4412。当然在这之前首先必须保证开发板上已经有了U-boot。如果没有,请先烧入一个已经编译好的Uboot.bin,可以利用JTAG或DNW。一、环境搭建 为了方便开发,这里利用网络传输原创 2016-06-19 19:54:59 · 1125 阅读 · 0 评论 -
mini-uboot 启动过程简单分析
单片机有最小系统,所谓最小系统,就是单片机能正常工作所需要的最少外设。对于Uboot来说,同样有个最小系统,因为Uboot最主要的功能就是引导内核。下面我们通过一个简单的Mini-Uboot来分析Uboot的启动加载过程。(只是分析过程,此Uboot具有引导内核功能)注:这个uboot 只是具有基本的内核引导功能,只是作为前期简单的学习使用,入门而已,并不是正常的uboot 启动流程原创 2016-06-19 19:53:38 · 468 阅读 · 0 评论 -
Exynos4412 所用外存 —— eMMC
Exynos4412所用外存不是原来的Nand Flash 与 Nor Flash,而是eMMC。eMMC是什么呢?和Nand Flash有什么区别呢?一、eMMC概述 eMMC(Embeded MultiMedia Card):它并非是一种全新尺寸的存储卡,而是由MMC协会所订立的内嵌式存储器标准规格,而且还是专门为手机和移动嵌入式产品设计的。eMMC简单来说原创 2016-06-19 19:50:24 · 619 阅读 · 0 评论 -
Exynos4412启动过程分析
学习Exynos4412启动流程前,我们先看看三星4412芯片启动框图:我们从图中可以看到4412内部有64K的ROM和256K SRAM,在ROM中已经固化好了一段代码,当硬件上电后首先运行的就是这段代码,这段代码三星起名为BLO(iROM BOOT 代码)。其作用是初始化SRAM,并将eMMC中256k代码拷贝到SRAM中,进行初始化DRAM。在图中我们很清楚看到这一个运行原创 2016-06-19 19:48:58 · 503 阅读 · 0 评论 -
Exynos4412 所用内存 —— DDR2
一、SDRAM二、DDR三、DDR2四、DDR2的配置原创 2016-06-19 19:46:26 · 480 阅读 · 0 评论 -
Exynos4412 Uboot 移植(一)—— Uboot 编译流程分析
Uboot 所用版本 u-boot-2013.01 u-boot-2013.01 中有上千文件,要想了解对于某款开发板,使用哪些文件、哪些文件首先执行、可执行文件占用内存的情况,最好的方法就是阅读它的Makefile。根据顶层Readme文件的说明:可以知道如果使用开发板board/,就先执行“make _config”命令进行配置,然原创 2016-06-19 18:59:10 · 797 阅读 · 0 评论 -
Exynos4412 Uboot 移植(二)—— Uboot 启动流程分析
uboot启动流程分析如下:第一阶段:a -- 设置cpu工作模式为SVC模式b -- 关闭中断,mmu,cachev -- 关看门狗d -- 初始化内存,串口e -- 设置栈f -- 代码自搬移g -- 清bssh -- 跳c第二阶段a -- 初始化外设,进入超循环b -- 超循环处理用户命令可见, U-Bo原创 2016-06-19 18:58:01 · 524 阅读 · 0 评论 -
Exynos4412 Uboot 移植(三)—— Uboot添加自定义命令
Uboot添加自定义命令:uboot中的命令使用U_BOOT_CMD这个宏声明来注册进系统,链接脚本会把所有的cmd_tbl_t结构体放在相邻的地方。UBoot版本:u-boot-2013.01 一、U-Boot命令的格式 即使是内核的启动,也是通过U-Boot命令来实现的。U-Boot中每个命令都是通过 U_BOOT_CMD 宏来定义的,格式如下:原创 2016-06-19 18:56:04 · 357 阅读 · 0 评论 -
Exynos4412 Uboot 移植(四)—— Uboot引导内核过程分析
bootloader 要想启动内核,可以直接跳到内核的第一个指令处,即内核的起始地址,这样便可以完成内核的启动工作了。但是要想启动内核还需要满足一些条件,如下所示:1、cpu 寄存器设置 * R0 = 0 * R1 = 机器类型 id * R2 = 启动参数在内存中的起始地址2、cpu 模式 * 禁止所有中断 * 必须为SV原创 2016-06-19 18:55:09 · 736 阅读 · 0 评论 -
ARM 汇编复习题
一、选择题1. ARM属于(A)[A] RISC架构 [B] CISC架构 2. ARM指令集是(C )位宽,Thumb指令集是(B )位宽的。[A] 8位 [B] 16位 [C] 32位 [D] 64位3. ARM指令集是(D)字节对齐,Thumb指令集是(B)字节对齐的[A] 1 [B] 2原创 2016-06-19 20:00:19 · 2071 阅读 · 0 评论 -
ARM处理器工作模式
一、ARM体系的CPU有以下7种工作模式:1、用户模式(usr):正常的程序执行状态2、快速中断模式(fiq):用于支持高速数据传输或通道处理3、中断模式(irq):用于普通中断处理4、管理模式(svc):操作系统使用的保护模式5、系统模式(sys):运行具有特权的操作系统任务6、数据访问终止模式(abt):数据或指令预取终止时进入该模式7、未定义指令终止模式(un原创 2016-06-19 20:01:18 · 248 阅读 · 0 评论 -
Exynos4412裸机开发综合练习
下面是一个案例需求:1、编写一段程序,该程序的主要功能是监控电路板上的电压值,若电压值超过当前的电压限制则通过蜂鸣器报警,通过按键解除报警;2、其具体要求如下; a) 程序下载20s后,进入电压采集状态(使用RTC ALARM功能完成), 要求1s采集1次电路板电压值;(采用RTC TIME TICK完成)b) 每次电压采集完成后,通过COM2将采集到的电压值发送到原创 2016-06-19 20:02:12 · 1027 阅读 · 0 评论 -
远程WEB控制MP3播放器设计(基于mini2440)
网上有很多 基于mini2440的MP3播放器设计的资料,多是按键控制,这里博主做了些轻微改动,利用远程WEB来控制MP3播放,具体怎么实现,下面会给出,大家先看看效果:WEB界面:后台运行:因为不是什么课程设计报告,博主就不阐述的那么详细,这个设计主要有三部分组成:1、WEB控制端(就是浏览器);2、WEB服务器端(将mini244原创 2016-06-19 20:18:53 · 779 阅读 · 0 评论 -
Linux 系统应用编程——网络编程(服务器模型)
在网络通信过程中,服务端通常需要处理多个客户端。由于多个客户端的请求可能会同时到来,服务器端可采用不同的方法来处理。总体上来说,服务器端可采用两种模型来实现:循环服务器模型和并发服务器模型。 循环服务器模型是指服务器端依次处理每个客户端,直到当前客户端的所有请求处理完毕,再处理下一个客户端。这类模型的优点是简单,缺点显而易见。特别是TCP循环服务器模型,由于必须先处理完当前客原创 2016-06-19 10:48:00 · 452 阅读 · 0 评论 -
ARM 汇编学习——编写简单的ARM汇编程序
首先,我们先看一个简单的汇编程序:[plain] view plain copy area ff,code,readonly ;声明代码段 code32 ;声明为32位ARM指令 entry ;声明程序入口 start ;b指令 ;1.b 跳转范围+_ 32M b + 标原创 2016-06-19 20:15:47 · 633 阅读 · 0 评论 -
ARM 汇编指令集
ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。 一、 跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转 Ⅰ.使用专门的跳转指令; Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入原创 2016-06-19 20:14:55 · 375 阅读 · 0 评论 -
Exynos4412裸机开发——中断处理
以KEY2控制LED3亮灭为例:一、轮询方式【0】检测按键k2,按键k2按下一次,灯LED2闪一次。【1】查看原理图,连接引脚和控制逻辑(1)按键k2 连接在GPX1_1引脚(2)控制逻辑 k2 按下 ---- K2闭合 ---- GPX1_1 低电压 k2 常态 ---- K2打开 ---- GPX1_1 高电压原创 2016-06-19 20:10:49 · 1871 阅读 · 0 评论 -
Exynos4412裸机开发 —— RTC 实时时钟单元
RTC(Real-Time Clock) 实时时钟。RTC是集成电路,通常称为时钟芯片。在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能正常工作(通常采用后备电池供电)。它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768kHz 晶体和电阻电容等。 一、RTC 控制器 实时时钟原创 2016-06-19 20:09:21 · 971 阅读 · 0 评论 -
Exynos4412裸机开发 —— 看门狗定时器
一、看门狗定时器概述 看门狗(WatchDog Timer) 定时器和PWM的定时功能目的不一样。它的特点是,需要不同的接收信号(一些外置看门狗芯片)或重新设置计数器,保持计数值不为0。一旦一些时间接收不到信号,或计数值为0,看门狗将发出复位信号复位系统或产生中断。 看门狗的作用是微处理器收到干扰进入错误状态后,使系统在一定时间间隔内复位。因此看门狗是保证系统长期原创 2016-06-19 20:08:15 · 1508 阅读 · 0 评论 -
Exynos4412裸机开发 —— UART
一、Exynos4412 UART 的特性 Exynos4412 中UART,有4 个独立的通道,每个通道都可以工作于中断模式或DMA 模式,即 UART 可以发出中断或 DMA 请求以便在UART 、CPU 间传输数据。UART 由波特率发生器、发送器、接收器和控制逻辑组成。 使用系统时钟时,Exynos4412 的 UART 波特率可以达到 4Mbps 。波特率原创 2016-06-19 20:06:41 · 632 阅读 · 0 评论 -
Exynos4412裸机开发 —— A/D转换器
一、Exynos4412 A/D转换器概述1、简述 10位或12位CMOS再循环式模拟数字转换器,它具有10通道输入,并可将模拟量转换至10位或12位二进制数。5Mhz A/D 转换时钟时,最大1Msps的转换速度。A/D转换具备片上采样保持功能,同时也支持待机工作模式。2、特性ADC接口包括如下特性。1)10bit/12bit输出原创 2016-06-19 20:04:58 · 520 阅读 · 0 评论 -
Exynos4412 裸机开发 —— IIC总线
前言: I2C(Inter-Integrated Circuit)总线(也称 IIC 或 I2C) 是有PHILIPS公司开发的两线式串行总线,用于连接微控制器及外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。 一、综述 Exynos原创 2016-06-19 20:03:39 · 648 阅读 · 0 评论 -
Exynos4412 Uboot 移植(五)—— Uboot 移植过程
Uboot 版本:u-boot-2013.01开发板:FS_4412 平台(Exynos4412,可以根据自己的板子修改,只要是4412的过程都是一样的)一、建立自己的平台1、下载源码我们可以在下面这个网站上下载最新的和以前任一版本的ubootftp://ftp.denx.de/pub/u-boot/这里我们使用的是u-boot-2013原创 2016-06-19 18:54:15 · 1127 阅读 · 0 评论 -
Exynos4412 Uboot 移植(六)—— 相关知识补充
Uboot版本:u-boot-2013.01一、gd结构体的定义与使用gd_t 和 bd_t 是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递。gd_t 定义在/u-boot-2013.01/arch/arm/include/asm/global_data.hbd_t 定义在 ./include/asm-arm/u原创 2016-06-19 18:52:57 · 313 阅读 · 0 评论 -
Exynos4412 内核移植(三)—— 内核启动过程分析
内核启动所用函数如下: 与移植U-Boot 的过程相似,在移植Linux 之前,先了解它的启动过程。Linux 的过程可以分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。对于uImage、zImage ,它们首先进行自解压得到vmlinux ,然后执行 vmlinux 开始“正常的”启动流程。 引导阶段通常使用汇编语原创 2016-06-19 18:49:19 · 387 阅读 · 0 评论 -
Linux 字符设备驱动开发基础(一)—— 编写简单 LED 设备驱动
现在,我们来编写自己第一个字符设备驱动 —— 点亮LED。(不完善,后面再完善)硬件平台:Exynos4412(FS4412)编写驱动分下面几步:a -- 查看原理图、数据手册,了解设备的操作方法;b -- 在内核中找到相近的驱动程序,以它为模板进行开发,有时候需要从零开始;c -- 实现驱动程序的初始化:比如向内核注册这个驱动程序,这样应用程序原创 2016-06-19 18:15:14 · 712 阅读 · 0 评论 -
Linux 字符设备驱动开发基础(四)—— ioctl() 函数解析
解析完 open、close、read、write 四个函数后,终于到我们的 ioctl() 函数了一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。下面是其源代码定义:函数名: ioctl功 能: 控制I/O设备原创 2016-06-19 18:14:36 · 403 阅读 · 0 评论 -
Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动
编写驱动的第一步仍是看原理图: 可以看到,该蜂鸣器由 GPD0_0 来控制 ,查手册可知该I/O口由Time0 来控制,找到相应的寄存器:a -- I/O口寄存器及地址 GPD0CON 0x114000a0b -- Time0 寄存器及地址 基地址为:TIMER_BASE 0x139D0000原创 2016-06-19 18:12:58 · 1015 阅读 · 0 评论 -
Linux 字符设备驱动开发基础(三)—— read()、write() 相关函数解析
我们在前面讲到了file_operations,其是一个函数指针的集合,用于存放我们定义的用于操作设备的函数的指针,如果我们不定义,它默认保留为NULL。其中有最重要的几个函数,分别是open()、read()、write()、ioctl(),下面分别对其进行解析 一、 打开和关闭设备函数a -- 打开设备 int (*open) (struct原创 2016-06-19 18:11:42 · 480 阅读 · 0 评论 -
Linux 字符设备驱动开发基础(五)—— ioremap() 函数解析
一、 ioremap() 函数基础概念 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:a -- I/O 映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O原创 2016-06-19 18:09:15 · 469 阅读 · 0 评论 -
Linux 设备驱动开发 —— platform 设备驱动
一、platform总线、设备与驱动 在Linux 2.6 的设备驱动模型中,关心总线、设备和驱动3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、S原创 2016-06-19 18:01:50 · 373 阅读 · 0 评论 -
Linux 设备驱动开发 —— Tasklets 机制浅析
一 、Tasklets 机制基础知识点1、Taklets 机制概念 Tasklets 机制是linux中断处理机制中的软中断延迟机制。通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成。 为了最大程度的避免中断处理时间过长而导致中断丢失,有时候我们需要把一些在中断处理中不是非常紧急的任务放在后面执行,而让中断处理程序尽快返回原创 2016-06-19 18:00:02 · 218 阅读 · 0 评论 -
WIFI vs 无线网
大家好多人都在使用无线设备上网,好多人对一些名词充满了好奇,比如WLAN和WIFI的区别是什么? WIFI无线上网和WLAN无线上网是什么意思? 这篇文章中我们为大家介绍什么是WIFI无线上网?大家可能会有这样的疑问,听说最多的应该是WLAN无线上网,很多笔记本电脑使用的都是WLAN无线上网,那么WLAN和WIFI有什么区别呢?一、基础概念a -- W原创 2016-06-19 17:59:00 · 350 阅读 · 0 评论 -
Linux 应用---make及makefile的编写
Make 在我们做linux 开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。 而Makefile是Mak原创 2016-06-18 23:25:55 · 348 阅读 · 0 评论 -
Linux 字符设备驱动开发基础(六)—— VFS 虚拟文件系统解析
一、VFS 虚拟文件系统基础概念 Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。 Linux 有两个特性:a原创 2016-06-19 11:47:30 · 517 阅读 · 0 评论 -
Linux 文件系统与设备文件系统 (一)—— udev 设备文件系统
一、什么是Linux设备文件系统 首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、console等几个系统必须的设备文件在这儿外,没有任何设备文件了。那我们移植好的各种设备驱动的设备文件怎么没有啊?如果要使用原创 2016-06-19 11:46:16 · 1289 阅读 · 0 评论