嵌入式linux
山一程~
知我者谓我心忧,不知我者谓我何求。
展开
-
嵌入式linux------使用eop烧写文件
1. 将eop连接到Pc2. 安装eop驱动,需要多次安装。3. 安装app,01.OpenOCD with GUI setup.exe,默认路径C:\Program Files (x86)\openocd\0.6.0\bin会添加oflash.exe,在命令行中输入oflash可查看安装情况。4. 开发板连接到eop,eop连接到pc5. cmd进入bin文件目录,执行oflas...原创 2019-02-03 09:49:39 · 1087 阅读 · 0 评论 -
嵌入式linux------大小字节序和位操作
字节序:ARM芯片存储数据的方式,多数默认使用小字节序。低位存放在低地址是小字节序,高位存放在低地址是大字节序。2440默认使用小字节序,但是可以通过设置某个寄存器去设置系统使用大或小字节序。使用C语言程序判断大小字节序程序如下:void judge(){ union stru{ int a; char b; } stru.a = 1; ...原创 2019-03-24 10:20:52 · 315 阅读 · 0 评论 -
嵌入式linux------汇编码和机器码
使用点亮LED的简单程序分析其汇编码和机器码,通过直接修改bin文件中的机器码修改功能,点亮其他的LED灯。首先修改Makefile文件把elf文件反汇编生成dis文件,查看其真正的汇编指令:all: arm-linux-gcc -c -o Led_on.o Led_on.S arm-linux-ld -Ttext 0 Led_on.o -o Led_on.elf arm-linu...原创 2019-03-23 22:33:41 · 1013 阅读 · 0 评论 -
嵌入式linux------第一个嵌入式程序,点亮LED灯
开发嵌入式程序一般需要三个步骤:1.看原理图,确定引脚,在此程序中就是找到控制LED的引脚。2. 查阅主芯片手册,确定如何设置控制引脚。3. 写程序。查看手册过程:在芯片手册中搜索led找到对应gpio引脚n_LED1,(在芯片引脚连接中,同名网络(net)表示连接在一起),n表示低电平有效,低电平时灯亮。n_LED1连接GPF4,对于引脚的设置一般分为两步首先设置为输出或者输入引脚,其次...原创 2019-03-19 23:17:54 · 5347 阅读 · 0 评论 -
嵌入式linux------MMU内存映射和访问权限检查
在JZ2440中有64MB的内存,假设在内存SDRAM中有n个APP在同时运行,他们的地址各不相同。程序在运行时所处的地址是链接地址,所以在编译某个APP时需要单独指定其链接地址,但是这是不可能的,因为有可能在同一时间有成百上千个APP在同时运行,APP太多不可能全部重新编译,也不可能预测它的地址。为了解决这个问题,必须引入虚拟地址,即虽然这些APP保存在内存中的地址各不一样,但是当CPU运行...原创 2019-03-11 11:58:33 · 697 阅读 · 0 评论 -
嵌入式linux----ARM入门,熟悉ARM处理器S3C2440
ARM(Advanced RISC Machines),是一个公司的名字,也是对一类微处理器的统称,也可以是一种技术的名字。ARM公司设计了很多处理器,他们根据内核的不同划分到各个系列中,系列划分是基于ARM7、ARM9、ARM10、ARM11内核的,在每个系列中,存储器管理、cache和TCM处理器扩展也有多种变化。ARM7内核是冯诺依曼体系结构,数据和指令使用同一条总线,内核有一条3级流水...原创 2019-02-26 22:55:10 · 1791 阅读 · 0 评论 -
嵌入式linux------MMU和Cache
内存管理单元(MMU)负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。现代多用户多进程操作系统通过MMU使得各个用户进程都拥有自己独立的地址空间:地址映射使得各进程拥有看起来一样的地址空间,内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。虚拟存储器在逻辑上对内存容量进行扩充,给人们一种内存很大的假象。虚拟地址范围是0~0xFFFFFFFF,这个地址范围称为虚拟地...原创 2019-02-25 23:16:21 · 600 阅读 · 0 评论 -
嵌入式linux------不同位宽设备的连接和数据读取
在S3C2440中各设备都属cpu统一编址。cpu发出地址送达内存控制器,然后内存控制器发出地址有一部分接到芯片上,有一部分未接,接到芯片上的引脚用来确定读取这个芯片上哪个单元,把这些单元返回给内存控制器,而内存控制器会使用那些未接的引脚来确定从这个单元中取出哪个字节返回给cpu,所以,不管连接情况如何,这些地址线都会用到。内存控制器与不同位宽rom连接方式如下:下面以两个例子来分析此...原创 2019-02-18 16:41:34 · 289 阅读 · 0 评论 -
嵌入式linux------通用异步收发UART(数据传输)
通用异步收发UART用来传输穿行数据,以全双工方式传输,最精简的连线方式只有三条线:TxD用于发送数据,RxD用于接收数据,Gnd为地线为双方提供参考电平。 UART采用标准的TTL/CMOS逻辑电平,高电平表示1,低电平表示0。转换为RS232逻辑电平后往往传输距离远、抗干扰能力强。数据传输TxD和RxD以...原创 2019-02-17 12:25:35 · 967 阅读 · 0 评论 -
嵌入式linux------S3C2440时钟体系
S3C2440的时钟控制逻辑既可以外接晶振,然后通过内部电路产生时钟源;也可以直接使用外部提供的时钟源,通过引脚来选择。三种时钟:1. FCLK,用于cpu核;2. HCLK,用于AHB总线上的设备,AHB总线用于高性能模块之间的连接。3. PCLK,用于APB总线上的设备,APB总线用于低带宽周边外设,如uart、i2c等。计算机通过外接晶振后通过内部电路,也就是时钟控制逻辑的锁相环PLL来...原创 2019-02-16 16:14:26 · 248 阅读 · 0 评论 -
嵌入式linux------使用uboot烧写裸板程序
1. 使用op/eop把u-boot.bin烧写到nor flash2. 开发板设置为nor启动,上电后马上在串口输入空格,使板子进入uboot而不是启动板子上的内核3. 连接pc----开发板的usb device口,安装驱动4. 在uboot串口菜单中输入n,表示接受usb文件并烧写到nand5. 使用dnw——100ask.exe发送bin文件6. uboot会自动接受并...原创 2019-02-03 10:47:51 · 624 阅读 · 0 评论 -
嵌入式linux------编写C语言程序点亮led灯
使用c语言替代汇编的原理也是往寄存器地址写数值,访问寄存器地址和访问内存是一样的。给出C语言程序:int main(){ unsigned int *pGPFDAT = (unsigned int*)0x56000050; unsigned int *pGPFCON = (unsigned int*)0x56000054; *pGPFDAT = 0x400; *pGPFCON =...原创 2019-04-01 22:38:35 · 1903 阅读 · 0 评论