分类: 嵌入式
2011-10-27 23:04:42
进入嵌入式Linux开发,根据micro2440用户手册第五章开始操作,这里提示一下注意的地方
1, vmware装fedora9虚拟机,照着手册来就好,提示格式化分区时就格式化,
2, 为减小不必要的麻烦使用root账户登录fedora
3, 安装vmware tolls,用root账户登录fedora,点击虚拟机VM---install vmware toll,将弹出一个cdrom,将压缩包拷贝出来,解压,进入压缩包,终端中执行./xxx.plg,不要改变安装路径,然后一路回车,有一个地方需要选为no,最后选一下分辨率即可,安装成功。然后在图形界面下设置分辨率,注销后即可看到效果。安装成功:鼠标可以自由出入,分辨率可以自由调节
4, 在使用nfs和ftp服务时,fedora都是使用静态IP,
要切换到静态IP时:
终端中输入:setup,选择network configuration,
static ip 填192.168.1.108, netmask填255.255.255.0 Default gateway ip 填192.168.1.1
保存退出,输入:/etc/init.d/network restart,用ifconfig验证一下
切换到动态ip时:
终端中输入:setup,选择network configuration,use dhcp选中即可
保存退出,输入:/etc/init.d/network restart,用ifconfig验证一下
5, a,开发板nfs起fedora上的根文件系统,norflash启动,supervivi模式,粘贴:
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/opt/FriendlyARM/mini2440/root_qtopia ip=192.168.1.230:192.168.1.108:192.168.1.108:255.255.255.0:sbc2440.arm9.net:eth0:off"
其中:192.168.1.230是开发板内核固定的静态ip
b,开发板从nand中启动根文件系统后,也可以使用mount挂载fedora主机上的根文件系统,当然这 也需要先把网线接好,命令如下:
mount –t nfs –o nolock 192.168.1.108:/opt/FriendlyARM/mini2440/root_qtopia /mnt
这样cd /mnt 即可以操作fedora主机上的roo_qtopia
c,fedora主机使用ftp登录开发板,既可以在fedora主机上看到开发板根文件系统:
fedora主机终端下输入:
ftp 192.168.1.230
用户名,密码都是plg (此时登录到了plg账户,处于plg目录下) bin (传输模式为二进制文件) put fedora主机上当前目录下需要上传的文件 (成功后在开发板/home/plg目录下)
回到开发板终端,处理传上来的文件即可
by 或者 eixt (则退出ftp登录)
6, 厂家提供的内核包含了板子的设备驱动,网上下载的源码包就没有这些,应此需要做修改移植。厂家网上下载源码包,修改makefile等加入板子的设备驱动源码,这样在使用厂家提供的配置文件时,make menuconfig才会出现板子上所需的驱动选择,开发板上运行的内核已经将驱动程序编译进内核了,而不是内核模块,所以要移植内核,测试驱动的话,选用网上的源码包,Linux/arch/arm/mach-s3c2440/mach-mini2440.c文件中描述了板子所有的设备资源
将驱动编译为模块动态加载进内核来测试:
要把自己的驱动在内核目录树中显示,比如char型设备,在Linux/drivers/char/Kconfig文件中,添加:
config MINI2440_HELLO_MODULE
tristate "Mini2440 module sample"
depends on MACH_MINI2440
default m if MACH_MINI2440 //选为M,意为编译为模块
help
Mini2440 module sample.
还需要和源代码关联起来,在Linux/drivers/char/Makefile文件中,添加:
obj-$(CONFIG_MINI2440_HELLO_MODULE) += mini2440_hello_module.o
现在可以编译模块了:
回到Linux根目录执行:make modules 就可以生成内核模块文件了
在Linux/drivers/char/mini2440_hello_module.ko
将mini2440_hello_module.ko拷贝到开发板的/lib/modules/2.6.29.4-FriendlyARM目录
在该目录或者顶层目录执行加载模块:modprobe mini2440_hello_module,即可看到效果,lsmod也可以验证
在该目录或者顶层目录执行卸载模块:rmmod mini2440_hello_module,即可看到效果,lsmod也可以验证
mini2440_hello_module.c源码如下:
#include
#include
static int __init mini2440_hello_module_init(void)
{
printk("Hello, Mini2440 module is installed !\n");
return 0;
}
static void __exit mini2440_hello_module_cleanup(void)
{
printk("Good-bye, Mini2440 module was removed!\n");
}
module_init(mini2440_hello_module_init);
module_exit(mini2440_hello_module_cleanup);
MODULE_LICENSE("GPL");
7,应用程序(打开设备,读写控制)------