前段时间上网的时候无意中看到了国内的一个开源项目maxwit,看了其中的介绍感觉还不错,所以就下载了相关的文档和源码试着用了用。经过了一些学习,发现可以很容易地使用MaxWit的开发环境编译出了arm的toolchain和bootloader,其他的功能还没有实验,有待学习。MaxWit有比较详细的文档资料你可以从网上单独下载,也可在下载源代码时得到。现在我就根据自己的经验简单的介绍一下使用MaxWit的开发环境编译toolchain和g-bios。
(1)首先通过svn的方式下载MaxWit的开发环境编译:在你想要存放源码的地方执行
svn co http://maxwit.googlecode.com/svn/trunk/ maxwit-read-only |
当前目录下将会创建一个名为“maxwit-read-only”的子目录,其中包含了MaxWit开放实验室开发环境中开源项目的创建脚本、g-bios源代码,以及GNU交叉编译工具编译时需要的补丁。这些基本上全是脚本和补丁,所以很快就下载完了。
这些脚本值得一看,都是自动下载源码、打补丁、配置编译源代码的脚本。让初学者能轻松的制作toolchain,并编译代码。
(1.1)我自己又将下载下来的开发环境代码有复制一份使用,以便修改后对比。
(2)代码下载后,首先要编译一个交叉工具。但是我当前下载的代码还有一点小bug,我修正后制作了补丁,先打上补丁在继续吧。
diff -uaNr maxwit-read-only/core/bmw_base maxwit/core/bmw_base --- maxwit-read-only/core/bmw_base 2009-09-08 21:03:29.000000000 +0800 +++ maxwit/core/bmw_base 2009-09-10 09:22:56.000000000 +0800 @@ -139,10 +139,11 @@ echo -n '.' case '${pkg}' in - glibc-*) + glibc-ports-*) rm -rf glibc-ports-${GLIBC_VER} tar xf ${SRC_PATH}/glibc-ports-${GLIBC_VER}.tar.* || exit 1 mv glibc-ports-${GLIBC_VER} ${MWP_GLIBC}/ports + pkg=${MWP_GLIBC}/ports ;; libtool-2.2.6a | texinfo-4.13a) diff -uaNr maxwit-read-only/toolchain/build maxwit/toolchain/build --- maxwit-read-only/toolchain/build 2009-09-08 21:03:25.000000000 +0800 +++ maxwit/toolchain/build 2009-09-10 09:21:56.000000000 +0800 @@ -21,6 +21,7 @@ ${MWP_BINUTILS} ${MWP_GCC} ${MWP_GLIBC} + ${MWP_GLIBC_PORTS} ' CheckPkg '${MWP_KERNEL} ${TOOLCHAIN_PKG_LIST} |
在maxwit-read-only(或者备份出的代码)目录下执行
./build [MaxWit Linux Building Menu] (configured for s3c2440)
1). Build Host Environment 2). Build GNU Toolchain 3). Build Bootloader (g-bios) 4). Build Linux Kernel (linux-2.6.29.4) 5). Build Basic System (busybox or coreutils) 6). Build Lib/App (vim,perl) 7). Build Lib/App (alsa,libmad,mpg123,madplay) 8). Build Lib/App (MPlayer) 9). Build Lib/App (jpeg,gif,tiff,png,fbv) 10). Build Lib/App (SDL,DirectFB) 11). Build Lib/App (usbutils,tslib) 12). Build 3D Game (doom) 13). Testing on QEMU 14). Create File System Images (yaffs2,jffs2,cramfs,etc.) x). Exit Your choice[1-14]? 2
|
然后选择[2],脚本就会下在${HOME}下建立目录,并检查其中是否已经有需要的软件包,否则会询问是否下载此包。如果你已经下载好了这些软件包,直接放��相应目录就可以加快进度。确认所有的软件包已经获得后,脚本会对其解压,并自动打上补丁(如果需要),开始全自动的编译工作。期间基本不会碰到问题,成功后会产生gcc-4.4.0的交叉编译器。至于编译器是针对什么平台的,可以在core/bmw_base脚本中设置TARGET_SOC='????',默认是S3C2440,所以我没改过。
(3)编译g-bios,在上面的交叉编译器编译好之后在选[3]就可以了,基本不用怎么修改就能实现基本的引导内核的功能。对于2440来说还是要改一个小地方:
diff -uaNr maxwit-read-only/g-bios/include/arch/s3c24xx.h maxwit/g-bios/include/arch/s3c24xx.h --- maxwit-read-only/g-bios/include/arch/s3c24xx.h 2009-09-08 21:03:21.000000000 +0800 +++ maxwit/g-bios/include/arch/s3c24xx.h 2009-10-10 23:20:49.000000000 +0800 @@ -35,7 +35,7 @@ #define GBIOS_BH_OFFSET 1 // # fixme
-#define CONF_MACH_ID 2318 +//#define CONF_MACH_ID 2318
#ifdef CONF_MACH_ID #define MACH_ID CONF_MACH_ID |
否则会出现内核运行时会出现machine ID不匹配的错误。
(4)编译很快,因为程序不大。完成后会在${HOME}/maxwit/images(默认情况)下出现g-bios-bh.bin和g-bios-th.bin。
g-bios-th.bin是g-bios的第一阶段,小于4K(大约3.6K)符合24x0系列的nand启动条件,所以直接将他烧到nand的 0x0 地址处。
之后就可以从nand启动,并通过串口的kermit协议引导g-bios-bh.bin,实现完整启动。这部分及其他的操作可以参考源码自带的中文文档操作了,上面讲得很清楚。我就不多说了。附上启动信息:
+----------------------------------+ | Welcome to MaxWit g- | | (http://maxwit.googlecode.com) |
| [09-10-10 12:28:05] | +----------------------------------+
ARCH = ARM v4T CPU = ARM920 PLAT = S3C2440 NAND = 0xEC:0x76 Load g-bios from (1.Flash, 2.Serial): 1 1. [ArchHeapInit() @ 0x330121a4] Init arch: heap init, region = [0x33013250, 0x33d80000]
2. [MW2440XInit() @ 0x330121f4]
3. [NetCoreInit() @ 0x33012544] Init subsystem: Network Subsystem
4. [FlashCoreInit() @ 0x33012944] Init subsystem: Flash Subsystem.
5. [S3c24xxPwmInit() @ 0x33012a4c] Init subsystem: Timer init Using default value: loop_per_usec = 1
6. [S3c24xxGpuInit() @ 0x3301246c]
7. [DM9000Init() @ 0x3301258c] Init driver: DM9000 DM900x ID = 0x9000, Varient = 0xb8c, Rev = 0. Detecting ethernet speed ... 100M Full Duplex
8. [CS8900Init() @ 0x330127c4] CS8900 NOT
9. [S3C2440NandProbe() @ 0x33012998] S3C2440NandProbe(): NAND-0 is detected: Vendor ID = 0xec, Device ID = 0x76 (Samsung K9F1208) Flash details: Chip size = 0x04000000 (64M) Block size = 0x00004000 (16K) Page size = 0x00000200 (512) OOB size = 0x00000010 (16) Scanning bad blocks:
Total: 1 nand chip detected
10. [SysConfInit() @ 0x33012edc] Init application: System Configuration.
Parition List: (on K9F1208) ---------------------------------------------------------------- Index Start End Size Type Name ---------------------------------------------------------------- 0* 0x00000000 - 0x00080000 512K g-bios 'g-bios' 1 0x00080000 - 0x00300000 2M512K linux 'linux' 2 0x00300000 - 0x01b00000 24M yaffs2 'rootfs' 3 0x01b00000 - 0x04000000 37M yaffs2 'data' ----------------------------------------------------------------
Autoboot after 2 seconds. Press any key to interrupt. g-bios: 0#
|
我只要简单的几步就可以实现g-bios的编译和烧写。以下是启动到g-bios-bh.bin后出现的三色屏。
我已经在mini2440上成功的用g-bios启动了Linux系统(使用nfs挂载rootfs)。对于maxwit,还有更多的东西需要研究。
关键字:mini2440
引用地址:
MaxWit及其中的g-bios 在mini2440的初次使用
推荐阅读最新更新时间:2024-11-07 21:13
mini2440 LED灯裸机硬件控制程序
查找mini2440的原理图,找到LED部分的原理图: 然后查找nLED_1到nLED_4分别连接的S3C2440的引脚: 由图可知: nLED_1---GPB5 nLED_2---GPB6 nLED_3---GPB7 nLED_4---GPB8 在S3C2440的引脚划分中,这四个引脚都属于Port B,因此可以通过配置Port B的控制寄存器对这四个引脚的功能进行配置 如果要让LED灯亮,nLED_1到nLED_4端需要低电平,因此GPB5到GPB8引脚需要: (1)输出:GPBCON 因此,GPBCON寄存器的11,13,15,17位要设置为0,而10,12,14,16位要设置为1,而且我们还知道GPBCON
[单片机]
mini2440上一步步实现将ADS工程移植到keil MDK
从买板子到现在,想想也有2个月啦,开始就想跑裸奔的,可是工程都是在ADS下,win7系统根本不能用,于是就想着怎么在MDK跑,可是MDK上s3c2440的启动文件是不完整的,因此不推荐使用,为此蛋疼聊好长一段时间,查了很多资料都不成功,可能是我太笨啦,为此,今天把我自己的方法写给和我一样的想用MDK的童靴们吧。 首先新建一个文件夹,然后在里面新建startcode和source两个文件夹,如下 接着打开MDK新建工程,启动文件不选,如下 接着复制光盘中的启动文件2440init.s option.inc memcfg.inc 2440addr.inc到startcode,如下 然后在MDK左侧栏新建两个文件夹,分
[单片机]
友善之臂mini2440开发板的一点感受
购买mini2440的原因,是因为作为一张开发板她也能做得那么漂亮。 市面上有很多功能雷同的开发板,能把开发板设计得那么漂亮的也算是比较有创意的,把开发板和触摸屏很漂亮地整合起来,乍一看还真像个产品了。 总体来说感觉还是不错的,但还有一些小的不满意的地方。 漂亮要付出代价的,LED和小键盘被埋没在触摸屏之下,LED只是用来看的,还可以通过缝隙,艰难地偷窥到亮还是不亮,但小键盘是没法按到了,虽然提供了键盘接口。当然也可以把开发板和触摸屏分离,但那样的话,不如买个qq2440。 再就是开发板的通病,底板是裸露的。虽然数字电路不是很怕短路,但总归有极端情况或则物理损伤,建议开发板的厂家,增加底壳。因为工作台上有一些零件引
[单片机]
交叉编译tslib1.4过程详述,配合QT4.5.3成功在Mini2440运行成功
移植tslib-1.4所遇到的问题分析与总结(elephant半原创:在移植过程中参考了一些网友的资料,现在结合我遇到的问题分析一下移植过程) 一:移植环境 1:主机环境:Ret Hat Enterprise 5 2: 交叉工具链:arm-linux-gcc-4.3.2 3: 开发平台:友善之臂mini2440+统宝3.5寸屏 4:所需的软件资源: tslib-1.4.tar.gz qt-x11-opensource-src-4.5.3.tar.gz qt-embedded-opensource-src-4.5.3.tar.gz (QT的移植是参考网上找到一篇较好的移植手册,但是此手册的作者不知道是无心之失还是咋的,给的资料有所
[单片机]
Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(2)
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 http://linux.chinaunix.net/techdoc/system
[单片机]
LCD---那些年我们一起玩mini2440(arm9)裸机
LCD-liquid crystal display 的简称,液晶显示器按驱动方式分为1.静态驱动、2.简单矩阵驱动及3.主动矩阵驱动。 其中,简单矩阵又可分为1.扭转向列型(TN)和超转向列型(STN)两种,而主动矩阵驱动则以TFT为主。 TN与STN都采用场电压驱动方式,如果显示尺寸加大,中心部分对电机变化的反应时间就会变长,显示器的速度跟不上。为解决这个问题,主动矩阵驱动TFT被提出,他通过晶体管显示信号开启过关闭液晶分子的电压,从而避免了显示器对电场效应的依靠。 LCD一块屏显示图像不但需要LCD驱动器,还需要LCD控制器。很多主芯片cpu集成了LCD控制器。 依据显示原理:作为帧同步信号的vsync,每发出一个脉
[单片机]
Mini2440移植qt-extended4.4.3
因为项目需求,前段时间在Mini2440上移植了qt-extended4.4.3,现将移植过程简单的说下,希望对做相关的工作的朋友有帮助。 一、开发环境 上位机: Fedora 9.0 交叉编译器版本:arm-linux-gcc4.4.3(友善之臂提供,在此说明下:arm-linux-gcc4.4.3或arm-linux-gcc4.4.2是支持arm9的,建议在arm9上移植不要使用友善之臂提供的arm-linux-gcc4.5(支持的是arm11的)); 网络文件系统目录:/opt/root_nfs/root_qtopia(大家根据自己的情况而定) 开发板LCD版本:w35 开发板bootloader:u-boo
[单片机]
mini2440一线总线移植tslib1.4
最近在学习中接触到了触摸库tslib,自己试着移植的时候发现网上分为两种方案,一种是使用2440自带AD的方案,另一种是友善的一线总线方案。我的液晶型号是TD35,默认的连接方案是一线总线,所以这里移植的是一线总线方案。 上网搜索的过程中发现网上可用的一线总线tslib并不是1.4版本的,但是编译后使用是没有问题的,抱着试一试的心态决定移植一下1.4版本的tslib到MINI2440,经过实验,成功将tslib的1.4版本移植到了mini2440. 移植主要是将友善提供的one_wire_ts_input.c文件添加到对应位置,修改配置文件就可以了。 下面列出补丁文件 diff -ru tslib/configur
[单片机]