ARM9基础—TQ2440启动信息介绍
admin 于 2018年11月15日 发表在 嵌入式linux开发

本教程基于TQ2440开发板来介绍嵌入式Linux的相关内容。

一.TQ2440开发板介绍

1. 开发板总览图

2. TQ2440核心板参数

特性说明
CPU处理器Samsung S3C2440AL,主频400MHz(最高可达533MHz)
SDRAM内存板载64MB SDRAM
Nand Flash板载256MB Nand Flash(标准配置),掉电非易失
Nor Flash板载2MB Nor Flash
CorePower专业1.25V核心电压供电,完美解决CPU发热现象
Power核心板采用3.3V供电
Powerled1个核心板电源指示灯
核心板接口接口型号为DC-2.0双列直插
尺寸37mm x 74mm

3. TQ2440底板硬件参数

硬件特性说明
串口板载五线异步串行口(UART0),可外接串口扩展板引出另两个串口(UART1和UART2)
网络接口板载100M DM9000网卡,带联接和传输指示灯
USB接口USB HOST接口;USB Device接口
存储接口一个SD卡接口,支持32G SD卡
音频接口采用芯片UDA1341,立体声音频输出,可录音
LCD接口集成了4线电阻式触摸屏接口;支持800×600、640×480、240×320、320×240等不同分辨率的TFT LCD
摄像头接口130W像素摄像头(标配驱动),支持AV信号视频输入或更高像素的摄像头
时钟源内部实时时钟(带有后备锂电池)
调试JTAGJTAG接口,支持ADS1.2,keil等软件的单步调试功能
复位电路采用专业复位芯片811进行复位,稳定可靠
电源接口高电流带载的5V电源供电,带电源开关指示灯
AD功能可调电阻接到ADC引脚上用来验证模数转换
IIC功能提供AT24C02的EEPROM验证IIC功能
蜂鸣器测试PWM功能的蜂鸣器
用户按键4个用户按键,使用外部中断
用户LED灯4个用户LED灯,使用GPIO口控制
底板尺寸105mm×128mm

4. 电阻式触摸屏硬件参数

尺寸4.3寸
显示面积95.04(H)mm×53.86(V)mm 
显示颜色16.7兆色 
分辨率480RGB×272(横屏)
对比度300:1
亮度320cd/m2(流明)
使用温度-20℃到70℃ 
次数触摸屏使用次数超过100,000次 
响应时间≤10ms 
接口40pin的0.5间距的FPC接口和50pin的2.0间距的插针接口
供电提供5V和3.3V两种电压供电,缺省状态是3.3V
LCD驱动板的尺寸103mm×83mm

笔者说:

针对其它不同厂家的ARM9开发板,只要是采用S3C2440主芯片,则学习方法或者操作经验都是大同小异的;因为主芯片接口功能都是芯片设计时预定义好的,而开发板之所以不同,无非是开发板生产厂家配备的外设或多或少而已。所以,在学习的过程中,多思考,多总结,然后触类旁通。 

二. 启动信息介绍

1. TQ2440启动信息

*** Warning - bad CRC or NAND, using default environment

##### EmbedSky BIOS for SKY2440/TQ2440 #####
Press Space key to Download Mode !
Booting Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00300000 ... 
Copy Kernel to SDRAM done,NOW, Booting Linux...
Uncompressing Linux..........................done, booting the kernel.

Linux version 2.6.30.4-EmbedSky (root@arthur-virtual-machine) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176) ) #1 Fri Dec 14 11:15:24 CST 2012
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: TQ2440
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 400.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
NR_IRQS:85
irq: clearing subpending status 00000002
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttySAC0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 59664KB available (4512K code, 454K data, 240K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay loop... 199.47 BogoMIPS (lpj=498688)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 296 bytes
NET: Registered protocol family 16
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 97 KHz
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
cfg80211: Calling CRDA to update world regulatory domain
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
yaffs Dec 14 2012 11:14:33 Installing. 
msgmni has been set to 116
alg: No test for stdrng (krng)
io scheduler noop registered (default)
Console: switching to colour frame buffer device 60x17
fb0: s3c2410fb frame buffer device
bkl initialized
led initialized
beep initialized
adc initialized
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440
loop: module loaded
Driver 'sd' needs updating - please use bus_type methods
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
PPPoL2TP kernel driver, V1.0
dm9000 Ethernet Driver, V1.31
dm9000_set_io byte_width 4 
dm9000_set_io byte_width 2 
dm9000 revision 0x01  io_mode 00 
Now use the default MAC address: 10:23:45:67:89:ab
eth0 (dm9000): not using net_device_ops yet
eth0: dm9000e at c4818000,c481c004 IRQ 51 MAC: 10:23:45:67:89:ab (EmbedSky)
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=2, 20ns Twrph0=3 30ns, Twrph1=2 20ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Creating 3 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "EmbedSky_Board_uboot"
0x000000200000-0x000000500000 : "EmbedSky_Board_kernel"
0x000000500000-0x000010000000 : "EmbedSky_Board_yaffs2"
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000

......

yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) on device 31:2.
Freeing init memory: 240K

Start Qtopia-2.2.0
usbcore: registered new interface driver zd1211rw
usbcore: registered new interface driver rt73usb
rtusb init rt2870 --->
usbcore: registered new interface driver rt2870
Try to bring net interface up ...
ifconfig eth0 hw ether 10:23:45:67:89:ab
eth0: link down
ifconfig eth0 192.168.1.6 netmask 255.255.255.0 up
add default gw 192.168.1.2
Done
[15/Mar/2001:01:21:27 +0000] 
Please press Enter to activate this console. boa: server version Boa/0.94.13
[15/Mar/2001:01:21:27 +0000] boa: server built Jul 29 2009 at 14:27:34.
[15/Mar/2001:01:21:27 +0000] boa: starting server pid=641, port 80

2. 输出信息分析

从软件的角度可将嵌入式Linux分为四个层次,四个层次由低到高分为:引导加载程序、内核、文件系统、用户应用程序(可选)。

系统存储结构图:

(1)引导加载程序

  固化在固件中(firmware)的boot代码(可选)和Bootloader两部分。如下:

##### EmbedSky BIOS for SKY2440/TQ2440 #####
Press Space key to Download Mode !
Booting Linux ...
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00300000 ... 
Copy Kernel to SDRAM done,NOW, Booting Linux...
Uncompressing Linux..........................done, booting the kernel.

(2)内核加载

  定制的内核及控制内核引导系统的参数。如下:

Linux version 2.6.30.4-EmbedSky (root@arthur-virtual-machine) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-
176) ) #1 Fri Dec 14 11:15:24 CST 2012
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: TQ2440
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 400.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
Kernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0

......

yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) on device 31:2.
Freeing init memory: 240K

 (3)文件系统

  实现文件存取、管理等功能的模块,提供一系列文件输入输出等文件管理功能,为嵌入式系统和设备提供文件系统支持。

Start Qtopia-2.2.0
usbcore: registered new interface driver zd1211rw
usbcore: registered new interface driver rt73usb
rtusb init rt2870 --->
usbcore: registered new interface driver rt2870
Try to bring net interface up ...
ifconfig eth0 hw ether 10:23:45:67:89:ab
eth0: link down
ifconfig eth0 192.168.1.6 netmask 255.255.255.0 up
add default gw 192.168.1.2
Done
[01/Jan/1970:00:00:07 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:07 +0000] boa: server built Jul 29 2009 at 14:27:34.
[01/Jan/1970:00:00:07 +0000] boa: starting server pid=643, port 80

Please press Enter to activate this console. eth0: link up, 100Mbps, full-duplex, lpa 0x4DE1

(4)应用程序

  启动开发板后,可以看到4.3寸LCD上显示的界面,有很多基于qt开发的测试应用,如下:

至此,启动信息结构简略介绍完成,后续会在深入linux文章中将各个再部分详细介绍。

笔者说:

对于嵌入式linux,建议循环渐进式学习,先从整体上去把控系统结构,当对整体有了“框架”式认识后,再细细学习并多实践,去充实整个框架内的内容。这样,才会不至于在学习的过程中,因为有太多的困惑而丧气甚至放弃。

下一篇:《ARM9基础—基于TQ2440的NFS配置汇总》

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:S3C2440,arm920t,TQ2440