mini2440的组成结构
mini2440原理图
USS
IIS
SPI
ALE/GPA18 CLE/GPA17 FRnB NAND CTRL NCON nFCEGPA22 nFRE/GPA20 nFWE/GPA19 SDCLK/GPE5 SDCMD/GPE6 SDIO SDDATA0/GPE7 SDDATA1/GPE8 SDDATA2/GPE9 SDDATA3/GPE10
nXBACK/GPB5 nXBREQ/GPB6 nGCS0 nGCS1/GPA12 nGCS2/GPA13 nGCS3/GPA14 nGCS4/GPA15 nGCS5/GPA16 nOE nWAIT nWE OM0 OM1
C
ADC
Clock EXYCLK CLKOUT0/GPH9 CLKOUT1/GPH10 MPLLCAP UPLLCAP OM2 OM3 XTIpll XTOpll XTIrtc XTOrtc
B
nCTS0/GPH0 nRTS0/GPH1 TXD0/GPH2 RXD0/GPH3 TXD1/GPH4 RXD1/GPH5 nRTS1/TXD2/GPH6 nCTS1/RXD2/GPH7 UCLK/GPH8
AIN0 AIN1 AIN2 AIN3 AIN4/TSYM AIN5/TSYP AIN6/TSXM AIN7/TSXP Aref
F7 E7 B7 F8 C7 D8 E8 D7 G8 B8 A8 C8 B9 H8 E9 C9 D9 G9 F9 H9 D10 C10 H10 E10 C11 G10 D11
1 2 3
J1 CON3
OM0
从NOR FLASH启动系统, 一般为BIOS模式 从NAND FLASH启动系统,一般为正常运行模式
C5 15p
XTIpll
NANDBOO7 K6 K5
zz使用mini2440开发板34页PPT
谢谢!
使用PC机超级终端作为开发板的显示终端
超级终端的设置
将串口线或USB转串口线连接开发板的串口 COM0和 PC 机的串口
从“开始->程序->附件->通讯”中运行“超 级终端”
选否
超级终端的设置
超级终端的设置
名字自定
超级终端的设置
设置串口属性
选择串口
为开发板下载系统映像文件
开发板要安装的映像文件有3种
输入 vi /etc/init.d/rcS命 令 按i键进入编制状态 在文件尾部输入两行
sleep 4 /usr/bin/car_control
按ESC键,输入:wq保存退出
使用FTP终端向开发板传送文件
安装FTP终端软件FileZilla
不用安装,直接运行,免费的软件
打开“编辑”/“设置”,选择“传 输”/“文件”/将文件类型该为“二进制”。
启动文件bootloarder
Vboot.bin或suppervivi-128M
内核kernel
zImage_T35
根文件系统
rootfs_qtopia_qt4.img
安装USB下载驱动
安装USB下载驱动 :“windowns平台工 具\usb下载驱动\Friendly ARM usb ownloadDriver Setup_20090421.exe”
连接串口线, 打开超级终端
连接USB线 启动模式选择
Nor Flash, 打开发板电源 在超级终端中 选k命令
Байду номын сангаас
下载内核映像
打开DNW 在菜单中点击“USB Port->Transmit”选项,并选择打开
NandFLash分析与总结
友善之臂K9F1208U0C PCB04-5位,12代表512M位,也就是64M字节熟悉一下NandFlash的硬件:1主要的引脚:I/O0 —I/O7:数据输入输出端,命令,数据,地址复用端口(LDATA0-LDATA7)R/B: 准备忙输出(RnB)CE:芯片使能(nFCE)CLE: 命令锁存使能(CLE)ALE:地址锁存使能(ALE)WE:写使能(nFWE)RE:读使能(nFRE)2Mini2440的一些引脚设置:和寄存器设置:(NCON(Advflash), GPG13(页大小), GPG14(地址周期), GPG15(总线宽度)–参考引脚配置)#define rGSTATUS0 (*(volatile unsigned *)0x560000ac) //External pin status3NandFlash启动时,代码小于4k与大于4k的情况:在三星的NAND Flash 中,当CPU从NAND Flash开始启动时,CPU会通过内部的硬件将NAND Flash开始的4KB数据复制到称为“Steppingstone”的4KB 的内部RAM中,起始地址为0,然后跳到地址0处开始执行。
这也就是我们为什么可以把小于4KB的程序烧到NAND Flash中,可以运行,而当大于4KB时,却没有办法运行,必须借助于NAND Flash的读操作,读取4KB以后的程序到内存中。
4NandFlash的存储结构以及读写原理:4.1NandFlash中的块,页,位宽:●NAND Flash的数据是以bit的方式保存在memory cell(存储单元)一般情况下,一个cell中只能存储一个bit。
这些cell以8个或者16个为单位,连成bit line ,形成所谓的byte(x8)/word(x16),这就是NAND Flash的位宽。
这些Line会再组成Pape(页)。
然后是每32个page形成一个Block,所以一个Block(块)大小是16k.Block是NAND Flash中最大的操作单元。
MINI2440开发套件01
BSP就是买开发板,开发板的生产商提供的一个资料和资源包 通常包括: 一 硬件相关: 1 开发板原理图 2 开发板元件列表 3 接口定义 4 地址分布
2、MINI2440开发板主要功能模块
2.1、MINI2440开发板主要功能模块-LCD
开发板支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,尺寸 从3.5寸到12.1寸,屏幕分辨率可以达到 1024x768象素; 支持黑白、4级灰度、16级灰度、256色、64K色、真彩色TFT液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到 1024x768象素; 标准配置为NEC 256K色240x320/3.5英寸TFT真彩液晶屏,带触摸屏;
3.1、linux操作系统的下载
在 BIOS 主菜单中选择功能号[y],开始下载 yaffs 根文件系统映象文 件。
4、MINI2440开发套件功能展示
功能强大的应用程序
4、MINI2440开发套件功能展示
丰富多彩的游戏
MINI2440开发套件功能展示
系统功能的可视化设置
4、MINI2440开发套件功能展示
2.7、MINI2440开发板主要功能模块-GPIO接口
开发板包含 16 条数据线(D0-D15)、8 条地址线(A0-A6, A24)、还有一些 控制信号线(片选、读写、复位等)。
2.8、 MINI2440开发板主要功能模块-串口
S3C2440 本身总共有 3 个串口 UART0、1、2,其中 UART0,1 可组合为一个全功能的串口,在大部分的应用中,我 们只用到 3 个简单的串口功能,即通常所说的发送(TXD)和接收(RXD),它们分别对应板上的 CON1、CON2、CON3, 这 3 个接口都是从 CPU 直接引出的,是 TTL 电平。
mini2440 nandflash操作总结
Mini2440 nand flash 操作总结首先要感谢CSDN论坛的赵春江老师的文章。
这篇文章基本上是他文章的内容。
百度上搜“CSDN 赵春江”就能找到。
一:硬件连接Nand flash操作对于自己编写mini2440启动代非常关键。
因为一般来说,嵌入式系统都有一片nand flash用来作为存储器。
所以掌握nand flash 的操作非常的必要和关键。
在操作之前,首先应该对nand flash 的硬件上有一定的了解。
我的mini2440板子自带的是K9F1G08U0A。
大小是128M。
其芯片上的重要引脚如下:I/O0~I/O7:数据总线,用于nandflash的所有命令,地址的输入,和数据的双向传输.CE:芯片使能引脚CLE (Command Latch Enable):命令锁存允许引脚ALE(Address Latch Enable):地址锁存允许引脚WE/:写芯片允许引脚RE/:读芯片允许引脚RB:状态读取引脚(低电平表示忙;高电平表示空闲)其他引脚:诸如电源之类因为S3C2440硬件自带有nand flash控制器,所以具有相对应的引脚可以和nand flash 芯片连接。
系统总线引脚DA TA0~DA TA7:直接与I/O0~I/O7相连接nFCE/GPA22 :直接与CE引脚相连CLE/GPA17:直接与CLE引脚相连ALE/GPA18 :直接与ALE引脚相连nFWE/GPA19:直接与WE/引脚相连nFRE/GPA20 :直接与WE/引脚相连FRnB:直接与RB引脚相连除此之外,S3C2440还有另外几个引脚用于配置nandflash控制器。
比如页大小,地址周期数等等。
这些引脚主要有如下:OM[1:0] ; NCON ; GPG13 ; GPG14 ; GPG15。
他们的配置方式在S3C2440说明书上已经很详细。
所以综上所述,S3C2440 与nandflash(K9F1G08U0A)的硬件连接图如下所示:二:nand flsah 工作原理简介Nand flash 主要是用于大容量的存储。
T1_MINI2440开发板的使用入门资料
3.2 自动装载SD卡和优盘
点移动存储器的图标, 出现“Remove USB Flash Drive”的提示,这时可以像在 Windows 中一样安全移除它们。
3.2 自动装载SD卡和优盘
说明:目 前 它 只 识 别 MMC/SD 卡 或 优 盘 的 第 一个分 区 , 并 且 格 式 为 常 见 的 VFAT/FAT32/FAT16。
然后, 打开电源开关S1
2.3 设置超级终端
2.3 设置超级终端(续)
2.3 设置超级终端(续)
2.3 设置超级终端(续)
2.3 设置超级终端(续)
2.3 设置超级终端(续)
2.3 设置超级终端(续)
2.3 设置超级终端(续)
2.4 从NOR FLASH启动的信息
3 开发板的图形界面操作
3.3 命令终端
“应用程序”“终端” ,出现命令终端窗口 界面 使用USB键盘(不要在启动之前接USB键盘, 否则不能使用)或者软键盘输入Linux 命令 点Option 菜单中的某些选项进行设置,以改 变显示的模式。
3.4 文件浏览
3.5 网络设置
3.6 Ping测试
3.6 Ping测试(续)
2.2 外部接口连接
可用B转串口线
用直连串口线连接开发板的串口0和PC机的串口 用交叉网线将开发板的网络接口与PC相连 用5V电源适配器连接到板上的5V输入插座 把音箱或者耳机的插头接入板上的音频输出口 用USB电缆连接开发板和PC 把液晶屏的数据线与开发板的LCD接口相连
开发板的LCD屏幕,应用程序简介
P20
3.1 触摸屏校正
进入触摸屏校正的三种情况 重装系统后,首次启动系统 利用NFS启动系统时 进入系统后,点“开始->设 置”切换到“设置”界面, 再点“重校正”图标也会出 现校正界面
mini2440触摸屏驱动分析
mini2440驱动分析系列之---------------------------------------Mini2440触摸屏程序分析By JeefJiang July,8th,2009这是mini2440驱动分析系列的第三篇文章,本文分为三个部分,第一部分讲叙硬件知识,包括触摸屏的原理以及SCC2440 SOC上的触摸屏是如何工作的。
第二部分分析输入设备子系统的框架,并进行相应的代码分析。
第三部分利用上述的原理来分析mini2440的触摸屏驱动。
第四部分介绍了测试和校准。
1.需要准备的硬件知识1.1电阻式触摸屏工作原理原理触摸屏附着在显示器的表面,与显示器相配合使用,如果能测量出触摸点在屏幕上的坐标位置,则可根据显示屏上对应坐标点的显示内容或图符获知触摸者的意图。
触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式、表面声波式,其中电阻式触摸屏在嵌入式系统中用的较多。
电阻触摸屏是一块4层的透明的复合薄膜屏,如图2所示,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,中间是两层金属导电层,分别在基层之上和塑料层内表面,在两导电层之间有许多细小的透明隔离点把它们隔开。
当手指触摸屏幕时,两导电层在触摸点处接触。
触摸屏的两个金属导电层是触摸屏的两个工作面,在每个工作面的两端各涂有一条银胶,称为该工作面的一对电极,若在一个工作面的电极对上施加电压,则在该工作面上就会形成均匀连续的平行电压分布。
如图4所示,当在X方向的电极对上施加一确定的电压,而Y方向电极对上不加电压时,在X平行电压场中,触点处的电压值可以在Y+(或Y-)电极上反映出来,通过测量Y+电极对地的电压大小,便可得知触点的X 坐标值。
同理,当在Y电极对上加电压,而X电极对上不加电压时,通过测量X+电极的电压,便可得知触点的Y坐标。
电阻式触摸屏有四线和五线两种。
四线式触摸屏的X工作面和Y工作面分别加在两个导电层上,共有四根引出线,分别连到触摸屏的X电极对和Y电极对上。
友善之臂Mini2440开发板的存储系统及IO空间总结
友善之臂Mini2440开发板的存储系统及I/O空间总结用友善之臂的板子已经有一段时间了.对于存储系统和I/O空间的认识也渐渐淡忘了,原因是在做其他开发时,一直用着自带的启动代码,从不关心板子的储存空间配置.最近在做网卡驱动,突然间就不知道网卡的地址是什么了,于是花点时间总结一下.废话少说.开始吧.1,板上的存储资源两个32M的SDRAM.一个2M的NOR FLASH一个128M(有些是64M)的NAND FLASH以上这些资源看原理图便知.2,板上的I/O资源这块板子上(准确的说是S3C2440)的I/O空间是用存储映射的方法映射到存储空间上的,也就说I/O空间是要占用存储空间的.3,各种存储器的区别与各自的用途为什么这块板子上有那么多存储设备呢?原因很简单.每种存储设备的用途都不一样,而且为了兼顾广大用户的需要,也必须有不同的存储设备.首先说SDRAM.(写到这突然想起忘了说SRAM了.SRAM是静态随机存储器,它具有掉电不丢失数据且不必频繁刷新的特点,存储速度快,相当于PC的内存,看来这块相当于内存的东西很重要,可是刚刚怎么没说有这块东西呢?原因很简单.因为本来就没有.其实,如果需要随机存储器,SDRAM就是随机存储器啊,只是它需要不断的刷新以保持里面的数据(电平)。
说到这,SDRAM的作用同学们也应该了解了.也就说我们这块板子就是有64M的内存,足够用了。
其次说说NOR FLASH.NOR FLASH是具有SRAM接口特性的ROM。
记住,是ROM,也就说,它相当于PC里的硬盘,可是NOR FLASH才2M未免太少了,没错,是很少,可是我们有NAND FLASH啊,它也是ROM啊,它也是”硬盘”啊,所以加起来我们可以说这块板子有130M(66M)的硬盘.这也足够用了,可以烧好几个Linux了.再说说NAND FLASH,NAND FLASH可以做的很大,但是速度却比不上NOR FLASH,NOR FLASH能做快却不能做的大,所以,速度和容量是一对矛盾.为了克服这对矛盾,这板子上两种FLASH都有了.各有用途.另外,初学者一定要知道NAND FLASH 与NOR FLASH启动的不同吧.这是跟他们的特性有关的,接下来谈谈.4,NOR FLASH 启动与NAND FLASH 启动开发板上有一个S2开关,当它打在NOR一端是就是NOR启动.相反,打在另一端就是NAND FLASH启动了.先说这两种启动的不同,再说说硬件上是如何启动的,空间又是如何分配的。
mini2440_led.c解析
mini2440_led.c解析1、static 关键字的重要性全局变量和函数全部用static 进行修饰,则其作用的范围仅仅限于当前的文件,而不是整个系统。
防止编译器在连接时,会报告命名错误的“名字空间污染”的问题。
2、ioctl()函数static int sbc2440_leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)ioctl函数是文件结构中的一个属性分量。
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。
所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。
struct inode *inode,是设备节点号。
fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令(在本例中,cmd=0/1,来实现对led 灯的亮灭。
),unsigned long arg是控制命令的个数(arg对应LED的编号)。
驱动程序提供了对ioctl的支持,用户就可以在用户程序中使用ioctl函数控制设备的I/O通道。
如果函数返回一个非负值,那么该值会被返回给调用程序,表示成功。
函数一般通过switch{case}对设备的一些特性进行控制。
switch{case}结构,每一个case对应一个命令码(cmd),做出一些相应的操作,在本例中的cmd有两个可选项0和1,0表示灯灭,1表示灯亮。
所以case 0,1都要进行操作。
由于实际的硬件连接中,是低电平灯亮。
所以在对引脚赋值时要取反。
s3c2410_gpio_setpin(led_table[arg], !cmd)3、static int __init dev_init(void)__init宏,定义在include/linux/init.h中。
对于非模块加载的驱动程序,通过_init 宏,会把函数中的代码放到.text.init段。
CMOS摄像头驱动解析
我们解析一下MINI2440开发板的CMOS摄像头的驱动。
该驱动总共包括以下文件:sccb.c、sccb.h、s3c2440_ov9650.c、s3c2440camif.h、s3c2440camif.c五个文件!s3c2440camif.c用于从cmos接口获取图像数据和将数据传输到进程空间(在有app读取时)。
s3c2440_ov9650.c读取和配置ov9650寄存器。
通过iic接口传输数据。
设备地址是60(#define OV9650_SCCB_ADDR0x60).比如进行初始化和product id获取.sccb.c定义了去读ov9650的寄存器的具体方法,是时序模拟的iic。
而s3c2440_ov9650.c里是调用这些具体方法去读写ov9650的寄存器的。
所以我们先分析sccb.c!首先看看它的结构:可以看到该程序是处理读写数据到ov9650的过程。
首先我们应该知道OV9650内部有大量的寄存器需要配置,这就需要另外的数据接口。
OV9650的数据接口称为SCCB(串行摄像控制总线),它由两条数据线组成:一个是用于传输时钟信号的SIO_C,另一个是用于传输数据信号的SIO_D。
SCCB的传输协议与IIC的极其相似,只不过II C在每传输完一个字节后,接收数据的一方要发送一位的确认数据,而SCCB一次要传输9位数据,前8位为有用数据,而第9位数据在写周期中是Don’t-Care位(即不必关心位),在读周期中是NA位。
SCCB定义数据传输的基本单元为相(phase),即一个相传输一个字节数据。
SCCB只包括三种传输周期,即3相写传输周期(三个相依次为设备从地址,内存地址,所写数据),2相写传输周期(两个相依次为设备从地址,内存地址)和2相读传输周期(两个相依次为设备从地址,所读数据)。
当需要写操作时,应用3相写传输周期,当需要读操作时,依次应用2相写传输周期和2相读传输周期。
因此SCCB一次只能读或写一个字节。
嵌入式02目标版硬件资源
嵌入式系统运行环境
CPU: Samsung S3C2440AL-40 SDRAM: 32-bit 64Mbyte 2M Nor flash + 64M Nand Fla接口(无需底板即 可调试编程) 4个用户LED 162针2.0mm间距三围插座 板载复位电路,有复位按键 5V power supply 操作系统支持
ARM9开发板
目前市场上ARM9的开发板很多,如天嵌、友善之臂等,它们都 以S3C2440为核心,加上对片上资源的外设设计,其结构和配置 基本类似 。
Micro2440开发板
本书目标板采用友善之臂的Micro2440。Micro2440 开发板由 核心板Micro2440 和底板Micro2440SDK 组成
一般NOR FLASH 里面放置的是不经常 更改的BIOS(如supervivi),NANDFLASH 里面则烧写完整的系统程序(bootloader、内 核、文件系统等)。
Micro2440底板
1 个100M 网络RJ-45 接口,采用DM9000 网卡芯片 3 个串口接口,分别有RS232 接口和TTL 接 口引出 4 个USB Host(使用USB 1.1 协议),通过 USB HUB 芯片扩展 1 个USB Slave(使用USB 1.1 协议) 标准音频输出接口,在板麦克风(MIC) 1 个PWM 控制蜂鸣器 1 个可调电阻接W1,用于AD 转换测试 6 个用户按键,并通过排针座引出,可作为 其他用途。
Linux-2.6.13 + Qtopia WindowsCE 5.0 uCos2
Micro2440核心板
Micro2440 有两种Flash,一种是NOR Flash,大小为2Mbyte;另一种是Nand Flash,大小为256M(可兼容最大1G Nand Flash),通过跳线J1 可以选择从NAND 或 NOR 启动系统。
友善之臂mini2440配置方案
5.3 建立交叉编译环境在Linux 平台下,要为开发板编译内核,图形界面Qtopia,bootloader,还有其他一些应用程序,均需要交叉编译工具链。
之前的系统,要使用不同的编译器版本才能正常编译各个部分,因此要在开发过程不断切换设置,这十分不利于初学者使用,也降低了开发的效率;自从Linux-2.6.29 开始,我们把交叉编译器统一为arm-linux-gcc-4.3.2,下面是它的安装设置步骤。
Step1:将光盘目录linux\中的arm-linux-gcc-4.3.2.tgz 复制到某个目录下如tmp\,然后进入到该目录,执行解压命令:#cd \tmp#tar xvzf arm-linux-gcc-4.3.2.tgz –C /注意:C 后面有个空格,并且C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
执行该命令,将把arm-linux-gcc 安装到/usr/loca/arm/4.3.2 目录。
解压过程如图所示:Step2:把编译器路径加入系统环境变量,运行命令#gedit /root/.bashrc编辑/root/.bashrc 文件,在最后一行export PATH=$PATH:/usr/local/arm/4.3.2/bin如图,保存退出。
重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。
5.4 解压安装源代码及其他工具本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括:- linux-2.6.29 内核源代码- 嵌入式图形界面Qropia 源代码(分为x86 和arm 平台两个版本)- busybox-1.13 源代码- linux 编程示例源代码(均为友善之臂自主开发并开放)- linux 下的开源bootloader(vivi 和u-boot)- 其他开源软件源代码,如boa(web server), madplay(一个命令行mp3 播放器)- 目标文件系统目录- 目标文件系统映象制作工具mkyaffsimage- 图形界面的Linux logo 制作工具logo_maker注意:所有的源代码和工具都是通过解压方式安装的,所有的源代码均使用统一的编译器arm-linux-gcc-4.3.2 编译(见上一节)下面是详细的解压安装过程,并有简要的介绍。
ARM开发板mini2440的按键控制LED小程序
ARM开发板mini2440的按键控制LED小程序Posted in Hardware&Device by Hans AdreamanMay 24, 2009Tags: LED, mini2440, s3c2440, 嵌入式, 开发板, 按键, 驱动mini2440是当前最经济的arm9开发板了,目前就是500多元一块,麻雀虽小,重要的那几个部件也还算齐全,用它来做计算机系统底层的学习工具很合适。
而且关于s3c2410/2440系列的教程资料和经验文章在网上很多,大家遇到问题时多google一下也能快速地解决。
先拿一个最初步的LED控制程序上手吧。
我的实验开发环境是基于ubuntu9.04系统。
控制硬件的行为,说到底就是设置其对应的寄存器。
mini2440开发板有四个LED灯(下图黄色部分,得把LED 屏先取下来才能看到,用螺丝刀取下四角的四颗螺丝),还有六个按键(很小,在cmos电池的旁边排成两列,下图红色圈住的部分),我们可以通过配置这些硬件对应的寄存器的值(根据映射在内存空间的地址),来控制它们。
例如,四个LED灯有一个配置寄存器(在mini2440板上对应标称为GPBCON)和一个数据寄存器(对应标称为GPBDAT),这两个寄存器都是32bit的整数数值。
mini2440开发板布局图四个LED灯分别使用GPBCON寄存上的4组“2bit位”来配置其是否是输出状态,例如,LED1使用第11、12bit,LED2使用第13、14bit,LED3使用第15、16bit,LED4使用第17、18bit。
当把这两位(从高位到低位的顺序看,即[bit12、bit11]这样为一组)设置为00则表示输入状态,01(对于LED1就是bit12为0,bit11为1)表示输出状态,10为特殊功能,11保留待用。
GPBDAT寄存器的其中4个bit对应着4个LED灯的数值状态。
第6个比特对应LED1,第7个比特对应LED2,第8个比特对应LED3,第9个比特对应LED4。
mini2440开发板内核模块编译及配置详解
Linux 内核每个文件夹中都有一个相应的makefile,通过递归来调用各个文件夹中的makefile 来编译Linux内核。
现在我们通过一个char设备为例来讲解makefile与Kconfig的配置以及对应于menuconfig之间的相互对应,现在我们编写了一个mini2440_hello.c一个简单的例子,看看是怎样配置以及烧写到mini2440开发板上面去运行。
mini2440_hello.c的代码如下,仅供参考。
#include <linux/init.h>#include <linux/module.h>#include <linux/moduleparam.h>MODULE_LICENSE("Dual BSD/GPL");//Module load Functionstatic int hello_init(void){printk(KERN_ALERT "hello, module!\n");return 0;}//Module Unload Functionstatic void hello_exit(void){printk(KERN_ALERT "Goodbye, module!\n");}// beclarationmodule_init(hello_init);module_exit(hello_exit);首先我们打开/linux-2.6.32.2/drivers/char目录下的Makefile和Kconfig文件,Makefile Kconfig把我们刚刚编写好的mini2440_hello.c放入/linux-2.6.32.2/drivers/char中,目的是将mini2440_hello.c当作是一个杂项设备看待。
对Makefile和Kconfig的配置如上图,配置完了以后,回到/linux-2.6.32.2,输入make menuconfig则出现图形化菜单。
Mini2440(Linux系统)的学习总结
Mini2440(Linux系统)的学习总结
内核、Shell、文件系统这三个部分构成了linux系统;
Linux内核
内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。
它从用户那里接受命令并把命令送给内核去执行。
Linux Shell
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。
目前主要有下列版本的Shell:
Bourne Shell:是贝尔实验室开发的。
BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。
Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
C Shell:是SUN公司Shell的BSD版本。
Linux 文件系统
文件结构是文件存放在磁盘等存储设备上的组织方法。
一个文件系统的好坏主要体现在对文件和目录的组织上。
目录提供了管理文件的一个方便而有效的途径。
我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度
接口布局。
Mini2440学习笔记(二)——GPIO
Mini2440学习笔记(二)——GPIO硬件连接:Mini2440有四个LED,使用的管脚是GPB5到GPB8,当管脚输出低电平时,led亮;六个按键使用的管脚是GPG0、GPG3、GPG5、GPG6、GPG7、GPG11,按下按键时,管脚是低电平状态。
GPIO寄存器:GPXCON:每两位配置一个管脚,00为输入,01为输出;GPXDAT:端口的数据寄存器,每一位表示对应管脚的状态,0为低电平,1为高电平;GPXUP:设置管脚的上拉电阻,每一位对应一个管脚,0为使能,1为禁止。
[c-sharp]view plaincopy1.#ifndef S3c2440A_H2.#define S3C2440A_H3.4./*5.* GPIO Register6.*/7.//GPB8.#define GPBCON (*(volatile unsigned long *)0x56000010)9.#define GPBDAT (*(volatile unsigned long *)0x56000014)10.#define GPBUP (*(volatile unsigned long *)0x5600001 8)11.//GPG12.#define GPGCON (*(volatile unsigned long *)0x560000 60)13.#define GPGDAT (*(volatile unsigned long *)0x560000 64)14.#define GPGUP (*(volatile unsigned long *)0x5600006 8)15.16.#endif程序:使用按键控制LED的亮灭,Key1~Key6非别表示数字1~6,每个LED代表一个二进制位,例如,当按下Key3时,LED1和LED2亮,表示二进制的0011。
该程序可下载到内部4K-ROM中运行。
[c-sharp]view plaincopy1.@********************************************************** ********************2.@ File:init.S3.@ 功能:通过它转入C程序4.@********************************************************** ********************5.6..text7..global _start8._start:9.ldr r0, =0x53000000 @ WATCHDOG寄存器地址10.mov r1, #0x011.str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启12.13.ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K14.@ nand flash中的代码在复位后会移到内部ram中,此ram只有4K15.bl main @ 调用C程序中的main函数16.halt_loop:17. b halt_loop[cpp]view plaincopy1./*2.* gpio.c3.* 用按键控制LED4.* 六个按键Key1~Key6,四个LED5.*/6.#include "s3c2440a.h"7.8.int main(void)9.{10.unsigned long key=0;11.unsigned long led=0;12.13.//led14.GPBCON &= (~(0xff<<10));15.GPBCON |= (0x55<<10); //将GPB5~GPB8的管脚设为输出16.GPBUP &= (~(0xf<<5));17.GPBUP |= (0xf<<5); //禁止GPB5~GPB8的上拉电阻18.19.//key20.GPGCON &= ~((3<<0)|(3<<6)|(3<<10)|(3<<12)|(3<< 14)|(3<<22)); //将GPG0、3、5、6、7、11设为输入21.GPGUP |= ((1<<0)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<< 11)); //禁止上拉22.23.while(1)24.{25.key = GPGDAT; //读取按键的状态26.if(!(key & (1<<0))) //Key127.{28.GPBDAT &= (~(0xf<<5));29.GPBDAT |= ((0xf-1)<<5);30.}31.if(!(key & (1<<3))) //Key232.{33.GPBDAT &= (~(0xf<<5));34.GPBDAT |= ((0xf-2)<<5);35.}36.if(!(key & (1<<5))) //Key337.{38.GPBDAT &= (~(0xf<<5));39.GPBDAT |= ((0xf-3)<<5);40.}41.if(!(key & (1<<6))) //Key442.{43.GPBDAT &= (~(0xf<<5));44.GPBDAT |= ((0xf-4)<<5);45.}46.if(!(key & (1<<7))) //Key547.{48.GPBDAT &= (~(0xf<<5));49.GPBDAT |= ((0xf-5)<<5);50.}51.if(!(key & (1<<11))) //Key652.{53.GPBDAT &= (~(0xf<<5));54.GPBDAT |= ((0xf-6)<<5);55.}56.}57.58.return 0;59.}Makefile:[c-sharp]view plaincopy1.all:init.S gpio.c2.arm-elf-gcc -g -c -o init.o init.S3.arm-elf-gcc -g -c -o gpio.o gpio.c4.arm-elf-ld -Tgpio.lds -g init.o gpio.o -o gpio_elf5.arm-elf-objcopy -O binary -S gpio_elf gpio.bin6.arm-elf-objdump -D -m arm gpio_elf > gpio.dis7.clean:8.rm -f gpio_elf gpio.bin gpio.dis *.o。
一起学mini2440裸机开发(九)--ARM中断控制系统
一起学mini2440裸机开发(九)--ARM中断控制系统ARM处理器程序的执行流程种类●正常执行:每执行一条ARM指令,程序计数器PC的值自动加4。
这一过程描述了应用程序顺序执行的状态。
●跳转执行:通过B、BL跳转执行,实现程序在一定范围内的跳转执行。
这一过程描述了ARM处理器程序执行过程中的过程调用。
●中断处理:在应用程序执行过程中,发生中断后,ARM处理器在执行完当前指令后,跳转到上述中断对应的中断处理程序处去执行,执行完中断处理程序后,再返回到发生中断的指令的下一条执行处接着执行。
这一过程描述了ARM处理器对异常中断的响应情况。
S3C2440中断系统概述在ARM处理器运行过程中,需要与系统的各类外部设备进行通信,包括发出控制信息、读取外部设备的状态信息以及采集数据等。
完成上述功能有以下两种实现方法。
●查询方式:处理器不断地查询外部设备的状态,一般是每隔一段时间查询一次或者是始终在查询,这样做的缺点是实时性差、浪费处理器时间。
●中断方式:当外设状态发生变化时发送一个信号给处理器,处理器通过内部的控制逻辑找到具体的外部设备,然后对请求信息进行响应。
在这种情况下,处理器的利用率大大提高,同时也提高了系统的实时性。
ARM处理器对中断第处理流程基本符合下面的流程。
①中断发生后,中断控制器将中断请求发送给CPU②CPU将当前程序的运行环境(程序的运行环境包括程序执行过程中使用的寄存器以及程序的返回地址等信息)保存,调用相应的中断处理程序。
③在中断处理程序中,识别具体是哪个中断发生,并进行相应的处理④从中断处理程序返回,恢复被中断程序的运行环境,接着执行。
ARM处理器有7种工作模式,如下表所示表1 ARM处理器工作模式处理器模式说明用户模式(User) 程序正常执行的模式快速中断模式(FIQ) 用于高速数据传输外部中断模式(IRQ) 用于普通的中断处理特权模式(Supervisor) 操作系统使用的一种保护模式数据访问终止模式(Abort) 用于虚拟存储及存储保护未定义指令终止模式(Udefined) 用于支持通过软件仿真硬件的协处理器系统模式(System) 用于运行特权级的操作系统任务ARM处理器的工作模式分为用户模式和特权模式,除用户模式外的其他6种工作模式为特权模式。
HPMini2140上网本之拆机实战分享
HP Mini 2140上网本之拆机实战分享HP 2140的系统内存、硬盘是安装什么地址呢?若是想要自行改换升级的话,又该如何着手?带着如此的疑问,于是笔者就开始研究起HP这台2140的机身架构了。
而在解决2140的系统内存、硬盘如何拆装以后,可能是笔者爱拆东拆西的坏适应又发作了,竟然不自觉地将整台2140给解体了,尽管这关于商借这台给笔者试用的朋友来讲实在是有点很不行意思,只是既然都已经给它"脱光光"了,固然也要来跟01广大的乡民们分享一下整个"脱"的进程啰!而在开始"脱"之前,笔者仍是不免要老话重提一下,由于笔者拿到的2140是测试机的关系,因此才敢如此做(万一真的不警惕拆坏了,仍是会有人帮笔者做善后处置的啦),若是网友是自行入手的2140,没必要的话,固然是看看本篇分享文就能够够啦!万一真的想自己动手碰运气的话,也建议最多只要拆到能够改换系统内存、硬盘的部份就好了,不然若是自己一不警惕真的拆坏了,送去HP的维修站而维修人员不睬你(或是要收取昂贵的维修费)的话,笔者可是完全不负责任的喔!在正式进行拆机之前,先来对2140拍照迷恋一下,同时笔者也要对这台测试机致上最高的敬意:感激您的捐躯奉献,才得以让01广大的乡民们看到这篇"脱"专门大的分享文,万一您不幸阵亡的话,那就去找蒋大吧!(尽管这次我是瞒着蒋大偷偷拆机的...)另外,就笔者个人的感觉来讲,HP这台2140尽管还不至于太难拆,预备的工具也只要一大一小两把十字螺丝刀就好了(笔者是利用能够改换螺丝刀头的工具),只是最重要的固然仍是利用者自己一双灵巧的双手,和一颗强而有力!(也能够预备一些小朋友以备不幸事件发生的话...)拆键盘(系统内存、硬盘拆装)由于在前一篇:「HP新款商用迷你笔记型电脑-Mini 2140试用分享」中已经进行过开箱了,因此那个地址就直接将2140拿出来吧!若是现在的2140仍是装着锂电池的话,第一个步骤确实是要先把锂电池拿下来,那个地址取下锂电池不仅是为了幸免因不警惕过电而损坏笔电内部的零组件,更重要的是,不取下锂电池也全然无法进行下一个步骤啦~将锂电池拿出来以后,就能够够在以下图的电池槽特写中,看到左侧、中间、右边各有一颗黑色的小螺丝(以下图画红圈的位置),利用十字螺丝刀将这三颗小螺丝取下来。
Mini2440开发板学习记录2
Mini2440学习22、H—JTAG的利用说明当前由友善之臂推出的的ARM学习开发超级滴流行,由于此刻的ARM调试与开发相较以前的单片机罢了加倍复杂,硬件上的考虑也更多了,因此选择一个好的开发方式无疑是学习ARM的最好起点。
此刻的市面上有很多出售,可是一样都比较贵,而且仿真器一样都有自己的配套的软硬件,在速度和Flash编程方面都各有优缺。
但是这些关于初学者罢了都太贵了,而简易仿真器的显现让初学者们能够利用乃至自制简易仿真器来调试ARM程序。
有了调试硬件部份,还得有调试代理软件,调试代理软件运行在宿主机上,帮忙宿主机上的前端调试软件(如AXD,Keil)利用JTAG接口(能够是简单的JTAG或是J-Link)完成与该开发板的硬件的交互。
目前能够免费利用的调试代理软件有很多,不同也专门大,要紧表此刻易用程度,支持的CPU类型,调试速度方面。
H-JTAG是最新出来的简易仿真器调试代理软件,其支持的器件较多,支持的前端调试软件业较多,专门是支持Keil,其调试速度也很有优势。
H-JTAG是有twentyone推出的免费代理软件,其官方主页为:。
目前官网上的最新的H-JTAG版本为V1.1 Release(2020.10.11)。
其支持特性有:支持RDI1.5.0和RDI1.5.1,支持ARM7和ARM9(包括ARM9E-S和ARE9EJ-S),支持Thumb和ARM指令集,支持大端方式和小端方式,支持(半主机机制),支持,和用户自概念的简易调试器硬件接口,支持Flash器件的编程。
依照上面提供的连接,用户能够自行下载某个版本的H-Jtag。
下载安装后运行界面如以下图所示:上图是没有找到硬件时的显示。
工具栏的快捷图标与菜单中图标一样的选项功能一样,下面详细介绍。
1)File停止运行H-Jtag,关闭该运行界面只会使H-JATG最小化托盘,并非会退出。
2)Operations这是以前的版本显示,此刻的不是叫Operatons,而是Control,可是一样的道理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mini2440的组成结构
白色部分为CPU内部寄存器,黄色部分为外设寄存器,绿色部分为存储控制器所接外设,红色部分为外设
一、S3C2440有31个通用寄存器和6个程序状态,如白色那部分
访问这些寄存器直接使用它们的名字,如:
1.msr cpsr_c,#0xd2
2.ldr r0,=pWTCON
二、S3C2440是32位的,2的32次方得知该CPU的地址空间为4G,即该CPU可访问4G 大小的范围。
1、绿色那部分为存储控制器所接外设地址空间,大小为1G,存在于CPU外部,由于存放
数据与程序用的,CPU可通过地址线和数据线从中读取数据。
其中存储控制器所接外设的地址空间如下表:
2、黄色那部分为外设寄存器,大小为3G,存在于外设控制器内部,即在这些寄存器上写入一些数据,则可控制相应外设的行为,而访问这些寄存器得通过具体的地址来访问(因为S 3C2440是使用统一编址的),如:
1.ldr r0, =pWTCON /* 将WATCHDOG计时器寄存器设为0 */
2.mov r1, #0x0
3.str r1, [r0]
其中的外设寄存器地址空间如表下:。