SmartArm3250上为了一个LED驱动而做的准备
1、本文全文为半香仙笛(Woody.c)原创
2、如果需要转载本文,请注明出处:http://blog.csdn.net/mcg890414/archive/2010/09/16/5888760.aspx
3、如果需要和笔者交流,请邮件至mcg890414@163.com
Thinking in Linux C...
之前拜读了实验室的一位大牛的csdn-blog:http://blog.csdn.net/wzyhb123456789/default.aspx
力顶一下先,我是照着他的博客文章,慢慢配好了一些东西。
嗯,现在板子上能够运行交叉编译的内核模块了。
有些部分现在还比较生疏,之后会重新温习,所以先在这里记下来,回头也好有个东西看着对照。
先说一下,我的顺序并不是一定的,虽然个别有先后限定。
一、给板子上嵌入式Linux系统(2.6.27)
这个部分比较漫长,而且貌似很复杂,给出另外位大牛的博文链接,回头自己可能 还要点[这里] 进行学习
二、网络设置:
不得不提的是,大学上了三年多,我还对网络不是特别了解,说也惭愧,但是要用的地方还特别多,没办法,硬着头皮配了很久。
还是总结下来一些数据:
假如你用的也是ZLG的Linux2.6.27,在你安装好系统,并且做任何配置之前
需要配置主机静态IP:192.168.7.*(*是除了236外的可用)IP
例如我的是:192.168.7.192
目标板IP:192.168.7.236(这个不用你来配,这个IP是新装系统已经配过的)
好了,先暂时这么着,回头需要改的时候可以去板子上的
vi /etc/rc.d/rc.conf
修改其中的内容就能够配置IP了。
把网线插上,打开主机的终端,PING一下目标板试试。
对了,等会儿出现了不能传输文件的情况,请你试试看关掉防火墙,或者直接卸载:
sudo apt-get remove iptables
之后就应该OK了。
关于文件传输问题参见后面的NFS配置、minicom配置和tftp配置
三、交叉编译工具链的安装和测试
SmartArm3250的 光盘中,
/3250/Linux2.6.27/cross tools/tc-nxp-lnx-armvfp-4.3.2-1.i386.rpm
这个就是我们回头需要用到的交叉编译工具链。
如果你是Ubuntu,怎么安装forREDHAT的rpm呢?没关系,我也是。。
sudo rpm --force-debian tc-nxp-lnx-armvfp-4.3.2-1.i386.rpm
这条命令之后,就安装成功了。
你可以在如下位置找到这个工具链的可执行程序:
/op/nxp
我们先不管这个,继续做我们应该做的事情。。。
在~下,(如果没有请使用vim 创建).bash_profile
命令:
cd ~ vi .bash_profile
将内容修正为:
# Use specific environment and startup programs PATH=$PATH:$HOME/bin:/opt/nxp/gcc-4.3.2-glibc-2.7/bin
之后保存,并且把
. .bash_profile
运行起来
如果没有任何提示语句,应该是对的。
然后咱们继续看看这个命令(请先输入这么多,然后按几下[TAB]看看有没有结果)
上图是我的测试结果,这个结果可以标明,交叉编译工具链已经OK(也就是说,我PC上的Linux已经配好了交叉工具链),但是只限于本次的终端进程,如果重新启动终端(就是你关了,再打开,或者创建新的终端实例),就需要重新进入~目录,运行. .bash_profile,并且测试是否工具链OK。
四、NFS服务器配置
好了,我们下面来搭建NFS服务器。
说简单点,NFS就是Network File System,实现网络文件共享这么简单。
我们的目的是,在主机上使用交叉编译工具编译完程序之后,让目标板能够访问到可执行程序并且执行。
好了,介绍完成,来看看如何做。
先找一个文件夹,你觉得合适就行。
chmod它的权限为777,这样比较合适目标板来访问
然后:
把刚刚那个目录的地址加入最后一句:
/home/woody/tftpboot 192.168.1.*(rw,sync,no_root_squash)
/home/woody/tftpboot 这个是我用来给tftp做文件传输用的,这里一起用,当做例子就好了。
192.168.7.* 是你的主机和目标板所在的网段,当然,如果你发现无论怎么配都不成功,可以将整段IP写成*
后面三个是参数,具体参数,我找了一个比较全的,放到这里,一来扫扫自己的盲,二来占占地方,撑撑场面~
# ro 只读访问 # rw 读写访问 # sync 所有数据在请求时写入共享 # async NFS在写入数据前可以相应请求 # secure NFS通过1024以下的安全TCP/IP端口发送 # insecure NFS通过1024以上的端口发送 # wdelay 如果多个用户要写入NFS目录,则归组写入(默认) # no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 # hide 在NFS共享目录中不共享其子目录 # no_hide 共享NFS目录的子目录 # subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) # no_subtree_check 和上面相对,不检查父目录权限 # all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 # no_all_squash 保留共享文件的UID和GID(默认) # root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) # no_root_squas root用户具有根目录的完全管理访问权限 # anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID # anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
OK,特别需要注意的是,这些参数中间,以及参数和逗号之间是不能有空格的,之前配了很久就是因为我的编程习惯,习惯在参数后面加空格,结果怎么排查都找不到问题,所以以后需要哦~
我们来启动NFS,输入如下命令:
sudo /usr/sbin/exportfs -rv
运行结果中如果没有提示错误,而且有:
exporting 192.168.1.*:/home/woody/tftpboot
如果如此,说明你的NFS已经export成功了,然后需要做得是:
好了,NFS已经启动了,如果需要重启,将start换成restart就行了。如果需要停止则是stop
五、安装配置minicom
minicom类似于WinXP自带的超级终端,可能大家都很熟悉,在Linux主机上安装一下,方便下一步操作吧。
好了,安装完毕。
下一步就是配置。
之后会出现这样的界面:
怎么配置呢?慢慢来,不心急。。
在没有改变窗体大小的时候,你可以使用导航键来进行菜单的选择,我们一项一项来修改:
1、Serial port setup
将每一项如图修改
回车个,退出后,保存为默认配置,然后退出即可。
把你的串口线和已经安装了嵌入式Linux的板子接起来,使用命令 minicom 来启动minicom,然后……我们来做一些比较开心的事情。
上电,你会看到如下的启动过程……(可以展开)
copy s1l to memery! jump to s1l! SmartARM LPC3250 board Build date: Dec 24 2008 08:38:21 Autoboot in progress, press any key to stop U-Boot 1.3.3 (May 5 2009 - 13:04:13) DRAM: 64 MB NAND: 256 MiB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 NAND read: device 0 offset 0x200000, size 0x1ac89c Reading data from 0x3ac800 -- 100% complete. 1755292 bytes read: OK ## Booting kernel from Legacy Image at 81000000 ... Image Name: Linux-2.6.27.8 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1755228 Bytes = 1.7 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux................................................... Linux version 2.6.27.8 (chenxibing@localhost.localdomain) (gcc versio9 CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177 Machine: SmartARM3250 board with the LPC3250 Microcontroller Memory policy: ECC disabled, Data cache writeback CPU0: D VIVT write-back cache CPU0: I cache: 32768 bytes, associativity 4, 32 byte lines, 256 sets CPU0: D cache: 32768 bytes, associativity 4, 32 byte lines, 256 sets Built 1 zonelists in Zone order, mobility grouping on. Total pages: 6 Kernel command line: root=/dev/mtdblock4 console=ttyS0,115200 mem=64M2 PID hash table entries: 256 (order: 8, 1024 bytes) Console: colour dummy device 80x30 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: 61152KB available (3348K code, 237K data, 112K init) Calibrating delay loop... 103.83 BogoMIPS (lpj=519168) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 288 bytes NET: Registered protocol family 16 Invalid board descriptor! LPC32XX DMA driver SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb 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 NetWinder Floating Point Emulator V0.97 (double precision) JFFS2 version 2.2. (NAND) ?? 2001-2006 Red Hat, Inc. yaffs Jul 4 2009 08:48:40 Installing. msgmni has been set to 119 io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) CLCD: ZHIYUAN LCD hardware, QVGA portrait display Console: switching to colour frame buffer device 40x30 Serial: 8250/16550 driver4 ports, IRQ sharing disabled serial8250.0: ttyS0 at MMIO 0x40090000 (irq = 9) is a 16550A console [ttyS0] enabled serial8250.0: ttyS1 at MMIO 0x40080000 (irq = 7) is a 16550A serial8250.0: ttyS2 at MMIO 0x40088000 (irq = 8) is a 16550A serial8250.0: ttyS3 at MMIO 0x40098000 (irq = 10) is a 16550A lpc32xx_hsuart.0: ttyTX0 at MMIO 0x40014000 (irq = 26) is a lpc32xx_ht lpc32xx_hsuart.0: ttyTX1 at MMIO 0x40018000 (irq = 25) is a lpc32xx_ht lpc32xx_hsuart.0: ttyTX2 at MMIO 0x4001c000 (irq = 24) is a lpc32xx_ht loop: module loaded LPC32XX_mii_bus: probed eth0: LPC32XX mac at 0x31060000 irq 29 eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-) Uniform Multi-Platform E-IDE driver Driver 'sd' needs updating - please use bus_type methods NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256Mi) Scanning device for bad blocks Bad eraseblock 0 at 0x00000000 Bad eraseblock 1 at 0x00020000 Bad eraseblock 2 at 0x00040000 Bad eraseblock 386 at 0x03040000 Bad eraseblock 727 at 0x05ae0000 Bad eraseblock 1340 at 0x0a780000 Creating 5 MTD partitions on "lpc32xx_nand": 0x00000000-0x00180000 : "smartarm3250-boot" 0x00180000-0x001c0000 : "smartarm3250-ubt-prms" 0x00200000-0x00600000 : "smartarm3250-kernel" 0x00600000-0x01600000 : "smartarm3250-safefs" 0x01600000-0x10000000 : "smartarm3250-rootfs" at25 spi0.0: 32 KByte at25256a eeprom, pagesize 64 I2C device at address 0x2d<6>ISP1301 Vendor ID : 0x04cc ISP1301 Product ID : 0x1301 ISP1301 Version ID : 0x0210 usb-ohci usb-ohci: at 0xf3120000, irq 0 usb-ohci usb-ohci: pnx4008 OHCI usb-ohci usb-ohci: new USB bus registered, assigned bus number 1 usb-ohci usb-ohci: irq 59, io mem 0xf3120000 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. mice: PS/2 mouse device common for all mice input: LPC32xx Touchscreen as /class/input/input0 rtc-pcf8563 3-0051: chip found, driver version 0.4.3 rtc-pcf8563 3-0051: rtc core: registered rtc-pcf8563 as rtc0 rtc-lpc32xx rtc-lpc32xx: rtc core: registered rtc-lpc32xx as rtc1 i2c /dev entries driver PNX4008-WDT: PNX4008 Watchdog Timer: heartbeat 19 sec mmci-pl18x: DMA buffer(10000 bytes), P:0x83980000, V:0xffc40000 mmc0: MMCI rev 0 cfg 00 at 0x0000000020098000 irq 15,13 usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver Advanced Linux Sound Architecture Driver Version 1.0.17. ASoC version 0.13.2 UDA1380 Audio Codec 0.6<6>ALSA device list: No soundcards found. TCP cubic registered NET: Registered protocol family 17 RPC: Registered udp transport module. RPC: Registered tcp transport module. ieee80211: 802.11 data/management/control stack, git-1.1.13 ieee80211: Copyright (C) 2004-2005 Intel Corporation
OK,如果看到了这些,表示你的minicom的安装,没有问题(如果有问题,请给我邮件一起讨论mailto:mcg890414@163.com )
如果对于minicom的使用有任何疑问,可以点击[这里 ]查看相关文档。
六、测试仪下NFS
我们测试NFS,可以在已经成功安装的minicom上来用一些“手段”测试。
在minicom的界面中输入
显示成功挂载了之前的共享目录。
然后,在minicom中进入/mnt就能看到共享目录中的文件了
至此,准备工作已经差不多了,下面就是根据自己的喜好,可以更改一些准备工作的内容了。
【SmartArm3250上为了一个LED驱动而做的准备】
推荐阅读
- Y房东的后半生14
- 陇上秋二|陇上秋二 罗敷媚
- MediaRecorder前后摄像头同时录像
- live|live to inspire 一个普通上班族的流水账0723
- 上班后阅读开始变成一件奢侈的事
- 危险也是机会
- “精神病患者”的角度问题
- 从蓦然回首到花开在眼前,都是为了更好的明天。
- 亲子日记第186篇,2018、7、26、星期四、晴
- 海院(实干是海院风景(上))