s3c2440裸机-异常中断(二. und未定义指令异常)
摘要:1._und(未定义指令异常)介绍 我们之前分析过5种异常,那么如何进入未定义指令异常,当然是cpu读取指令发生异常,出现了指令解析异常。 我们先来看下当cpu解析到什么样的指令才会触发未定义指令异常呢? 从上面的arm指令格式中可知,只要指令码属于划线的格式,就属于未定义指令异常。 2.汇编向c函
阅读全文
s3c2440裸机-异常中断(一. 异常、中断的原理与流程)
摘要:1.异常中断概述 在arm架构的处理器中,cpu有7中工作模式,2中工作状态。 1.CPU模式(Mode): 7种Mode: 除了usr/sys,其他5种都是异常模式。我们知道中断属于异常的2中,中断有irq,fiq。 |usr|sys|undefined(und)|Supervisor(svc)|
阅读全文
s3c2440裸机-代码重定位、清bss的优化和位置无关码
摘要:##1.代码重定位的改进 用ldr、str代替ldrb, strb加快代码重定位的速度。 前面重定位时,我们使用的是ldrb命令从的Nor Flash读取1字节数据,再用strb命令将1字节数据写到SDRAM里面。 我们2440开发板的Nor Flash是16位,SDRAM是32位。 假设现在需要复
阅读全文
buildroot教程
摘要:1 引入buildroot Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架。用来制作根文件系统,我们还要自己去移植一些第三方软件和库,比如 alsa、iperf、mplayer 等等。 那么有没有一种傻瓜式的方法或软件,它不仅包含了 busybox 的功能,而且里面还
阅读全文
s3c2440裸机-清bss原理及实现
摘要:1.清bss的引入(为什么要清bss) 我们先举个例子: include "s3c2440_soc.h" include "uart.h" char g_Char = 'A'; //.data char g_Char3 = 'a'; const char g_Char2 = 'B'; //.roda
阅读全文
s3c2440裸机-代码重定位(2.编程实现代码重定位)
摘要:代码重定位(2.编程实现代码重定位) 1.引入链接脚本 我们上一节讲述了为什么要重定位代码,那么怎么去重定位代码呢? 上一节我们发现"arm linux ld Ttext 0 Tdata 0x30000000"这种方式编译出来的bin文件有800多M,这肯定是不行的,那么需要怎么把.data段重定位
阅读全文
Markdown语法教程
摘要:标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 效果如下: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 换行 Markdown段落的换行是使用两个以上空格加上回车,当然也可以在段落后面使用一个空行来表示重新
阅读全文
s3c2440裸机-代码重定位(1.重定位的引入,为什么要代码重定位)
摘要:1.重定位的引入(为什么要代码重定位) 我们知道s3c2440的cpu从0地址开始取指令执行,当从nor启动时,0地址对应nor,nor可以像内存一样读,但不能像内存一样写。我们能够从nor上取指令执行。 例子1:当nand启动的时候,我们nand中的前4K指令会变自动加载到sram中去,这时的0地
阅读全文
s3c2440裸机-内存控制器(五、SDRAM编程实现)
摘要:配置内存控制器 SDRAM编程配置 2440内存控制器共有13个寄存器。 BANK0 BANK5只需要设置BWSCON和BANKCONx(x为0~5)两个寄存器; BANK6、BANK7外接SDRAM时,除BWSCON和BANKCONx(x为6、7)外,还要设置REFRESH、BANKSIZE、MR
阅读全文
s3c2440裸机-内存控制器(四、SDRAM原理-cpu是如何访问sdram的)
摘要:1.SDRAM原理 black (1)SDRAM内部存储结构: (2)再看看与2440连接的SDRAM原理图: sdram引脚说明: A0-A12:地址总线 D0-D15:数据总线(位宽16,2片级联成位宽32) BA0-BA1:bank选择 nSCS:片选 nSRAS:行地址选择 nSCAS:列地
阅读全文
s3c2440裸机-内存控制器(三-1、norflash编程之NorFlash原理)
摘要:1.flash种类与特性: flash一般分为nand flash和nor flash,各自特性如下表: | | Nor | NAND | | | | | | XIP(片上执行) | yes | no | | 性能(擦除)| 非常慢(5s,块太大) | 快(3ms) | | 性能(写)| 慢 | 快
阅读全文
s3c2440裸机-内存控制器(二、不同位宽外设与CPU地址总线的连接)
摘要:不同位宽设备的连接 我们先看一下2440芯片手册上外设rom是如何与CPU地址总线连接的。 8bit rom与CPU地址线的连接 8bit 2 rom与CPU地址线的连接 8bit 4 rom与CPU地址线的连接 16bit rom与CPU地址线的连接 16bit 2 rom与CPU地址线的连接 从
阅读全文
s3c2440裸机-内存控制器(一、内存控制器的原理)
摘要:1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nand控制器等... 1.不同类型的控制器: (1)GPIO控制器属于门电路,不涉及到时序,相对简单。
阅读全文
s3c2440裸机-UART编程(二、UART编程实现)
摘要:UART编程 1.初始化 我们的2440支持3个UART串口,以uart0为例讲解。 那么我们需要实现以下这几个函数完成串口的最基本功能: (1)uart0_init()用于初始化串口 (2)putchar()用于发送一个字符 (3)getchar()用于接收一个字符 (4)puts()用于发送一串
阅读全文
s3c2440裸机-UART编程(一、UART硬件介绍及传输原理)
摘要:1.uart硬件介绍 UART的全称是Universal Asynchronous Receiver and Transmitter(异步收发器)。 uart主要用于: 1.打印调试 2.数据传输 串口通过三根线即可,发送、接收、地线。 pc的TxD arm的RxD (UART write) arm
阅读全文
s3c2440裸机-时钟编程(二、配置时钟寄存器)
摘要:s3c2440裸机编程 时钟编程(二、配置时钟寄存器) 1.2440时钟时序 下图是2440时钟配置时序: 1.上电后,nRESET复位信号拉低,此时cpu还无法取指令工作。 2.nRESET复位信号结束后变为高电平,此时cpu开始工作。此时cpu主频FCLK=osc。 3.此时可以配置PLL,经过
阅读全文
s3c2440裸机-时钟编程(一、2440时钟体系介绍)
摘要:1.总线框架 下图是2440的总线框架,其中有AHB(Advanced High performance Bus)高速总线,APB(Advanced Peripheral Bus)外围总线。 不同总线对应不同的时钟。 SOC FCLK AHB HCLK APB PCLK 其中: 1.使用AHB总线的
阅读全文
linux搭建TFTP服务
摘要:在嵌入式领域,常用到开发板和宿主机的文件传输,tftp传输会很方便
阅读全文