×
单片机 > 单片机程序设计 > 详情

arm9 mini2440 supervivi烧写方法

发布时间:2024-05-05 发布时间:
|

一:

使用JLink V8烧写Nor Flash方法:

一. 做好准备工作:

比如安装JLink驱动,USB转串口驱动(如果是笔记本)...


二. 将开发板跳线拨到Nor端,连接好JLink,JLink另外一端连接在笔记本USB端口上,开发板上电。


三. 烧写:

(1)打开 开始->SEGGER->J-Link ARM V4.081->J-Flash ARM;

(2)File->Open Project,打开s3c2440a_embedclub.jflash(此文件在)

(3)Options->Project settings

选择Flash,点击Select flash device,选中开发板对应Nor Flash型号。在这里需要注意,mini2440的nor flash型号是SST39VF1601

(4)Target->connect

(5)File->Open,打开需要下载的镜像文件,我选择的是supervivi-128.bin文件,在mini2440官方光盘里有。

接下来需要你选择的都默认。

(6)Target->Program

先擦出再烧写。

(7)烧写完毕,断电,取下JLink。

(8)重新上电,在超级终端中看到supervivi启动界面:

参考网址:/zixunimg/eeworldimg/www.linuxidc.com/Linux/2013-01/77393.htm

只有Superboot才能配合使用MiniTools的USB下载功能,supervivi不可以。


二:

linux2.6.32内核移植到mini2440之supervivi

平台:Fedora9 + mini2440(64M Flash)

交叉编译工具:arm-linux-gcc 4.4.3

由于本文章主要是针对内核的移植,所以有关supervivi和文件系统的制作在此不作讲解,supervivi采用mini2440官网上的最新supervivi,由于本人的开发板是64M的,最新的linux系统下的文件系统太大下载不了,依据官网上的资料对文件系统进行剪裁后的制作的,如果你的FLASH大于64M,那你就可以直接使用光盘中的制作好的文件系统,现在主要讲解一下linux移植。

1)下载linux内核源代码

获取内核的网址是:/zixunimg/eeworldimg/www.kernel.org/pub/linux/kernel/
可以看到你里面有各种版本的Linux,下载现在要移植的Linux-2.6.32版本,如果Linux可以上网的话,可以使用wget/zixunimg/eeworldimg/www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz,命令直接在当前的目录下进行下载(建议在windows系统下下载,然后通过共享复制到linux系统下)

2) 解压linux内核源代码

假设内核包已经存放在/opt/FriendlyARM/mini2440/目录下,终端下输入以下命令:

cd /opt/FriendlyARM/mini2440/ 切换到内核存放的目录

tar xvzf linux-2.6.32.tar.gz 将内核解压到当前目录下

3) 修改源代码中的相应文件以适应mini2440

(1)修改Makefile文件

由于linux内核源代码默认的平台为X86平台,编译器默认的为gcc 所以要修改linux内核的默认平台为arm平台,编译器默认为arm-linux-,要修改这两项大约在文本的182行左右,下面两附图为修改前后的内容:

修改前:

修改后:

4) 测试linux内核能否顺利通过编译

4.1 make s3c2410_defconfig //使用缺省的配置文件,也就是SMDK2440的缺省配置文件,完成此步后,将会在linux-2.6.32下产生一个.config文件,想要查看此文件是否存在,使用"ls -a"命令.

4.1 也可以将s3c2410_defconfig拷贝到linux-2.6.32目录下,首先切换目录到linux-2.6.32,然后执行以下命令:

cp ./arch/arm/configs/s3c2410_defconfig .config

4.2 编译内核,编译的内核存放在/arch/arm/boot/目录下

make or make zImage or make bzImage //编译的过程比较长,大约在二十分钟左右

(zImage和bzImage的区别:仅仅在X86平台下有区别,zImage只能编译小于512K的内核)

5) 修改机器码

很关键的一点是,在启动内核时,是根据bootloader传入的机器码(MACH_TYPE),来决定应启动那种目标平台,2.6.29以后的版本,友善之臂申请了字节的机器码1999,在文件opt/kernel/linux-2.6.32.2/arch/arm/tools/mach-types中.

由于我们在此并没有使用mini2440的平台,使用的是SMDK2440的平台,但bootloader(supervivi)内的机器码为1999,所以这里我们可以将s3c2440的机器码改为1999.

如果传入的机器码不对的话,启动的时候一般会出现下面的错误

Uncompressing

Linux................................................................................

done,booting
the kernel.
运行到这就停止了.

5)修改时钟源


在 mach-mini2440.c的第 160 行static void __init smdk2440_map_io(void)函数中,把其中的 16934400(代表原 SMDK2440 目标板上的晶振是 16.9344MHz)改为 mini2440 开发板上实际使用的 12000000(代表 mini2440 开发板上的晶振 12MHz,元器件标号为 X2),如果不更改的话,串口通信将会出现乱码.

更改后:

更改前:

6) 修改NAND分区信息.

要让内核知道nand flash的分区信息,设置成跟bootloader一致.在arch/arm/plat-s3c24xx/common-smdk.c中修改smdk_default_nand_part[],注意这个一定要跟bootloader的一致.

查看supervivi分区信息

(1) 输入q进入goto shell of vivi

Supervivi-> part show 显示以下分区表:

(2) 按上面的信息修改分区表,修改后:

7) 增加Yaffs2文件系统的支持

首先到 /zixunimg/eeworldimg/www.aleph1.co.uk/cgi-bin/viewcvs.cgi/网站下载一个yaffs文件系统的补丁,点击下图中的Download GNU tarball,下载.

得到补丁包后将其放到/opt/FrinedlyARM/mini2440/目录下,解压补丁,然后打上yaffs2的补丁,方法如下:

tar xvfz cvs-root.tar.gz(解压得到补丁目录cvs)

cd /opt/Frinedly/mini2440/cvs/yaffs2/(进到yaffs2的补丁目录下)

./patch-ker.sh c /opt/FriendlyARM/mini2440/linux-2.6.32(执行补丁脚本,打补丁到内核中,其中/opt/FriendlyARM/mini2440/linux-2.6.32为内核源码的地址)此时到内核源码的“fs/”目录下面将会看到新添加了一个名为“yaffs2/”的目录,同时fs/目录下面的Makefile文件和Kconfig文件也添加了yaffs2的配置和编译条件。


8)配置内核

9.配置内核

调用自带的一个默认配置单,该配置单在内核源码的 “arch/arm/configs/”目录下面,名为:“s3c2410_defconfig”,该配置文件里面选择了几乎所有的和S3C24XX系列CPU相关的配置选项,我们完全可以在该配置单的基础上进行配置。

操作前提是切换到linux-2.6.32目录下进行:
cp arch/arm/configs/s3c2410_defconfig .config 或者 make s3c2440_defconfig

make menuconfig

(1).General setup --->

[*] Configure standard kernel features (for small systems) --->

选上这项,否则文件系统中的一些选项不会出现

(2). System Type ---->

[*] S3C2410 DMA support [*] Support ARM920T processor

S3C2440 Machines --->

[*] SMDK2440

[*] SMDK2440 with S3C2440 CPU module

(3).[*] Enable loadable module support --->

[*] Module unloading

(4).Device Drivers --->

Memory Technology Device (MTD) support --->

[*] MTD partitioning support

NAND Device Support --->

NAND Flash support for S3C2410/S3C2440 SoC

[ ] S3C2410 NAND Hardware ECC //这个要去掉

[*] Network device support --->

[*] Ethernet (10 or 100Mbit) --->

DM9000 support

< > Real Time Clock --->

[1] [2]
arm9mini2440supervivi烧写方法

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义