AT91SAM9260搭建LINUX操作系统
一、 编写目的 2
二、 系统搭建 2
1. 下载相关软件包 2
2. Bootstrap编译 3
3. U-BOOT编译 5
4. LINUX编译 7
5. 通过U-BOOT的TFTP命令从TFTP服务器下载系统镜像 9
6. 文件系统制作 10
7. 挂载NFS作为根文件系统 10
三、 总结 14
一、编写目的
本文档用于记录AT91SAM9260 LINUX学习的过程。使用以前开发过的一个9260核心板进行开发。该核心板参考ATMEL官方的AT91SAM9260-EK开发板设计,因此与官方开发板使用相同的BOOTLOADER、KERNEL。
可从www.linux4sam.org或ftp://www.at91.com/pub/下载AT91SAM9260-EK开发板的软件支持包进行开发。后期ATMEL对此开发板没有单独进行维护了,相关软件源码都整合到最新的AT91源码中了,通过make去选择相应开发板。
www.linux4sam.org有相应软件(bootstrap、uboot、内核)源码和相关的使用方法,本文档中的一些编译、安装方法都可能来源于此网站上的说明。
开发环境说明:CentOS 6.5(2.6.32) 、arm-linux-gcc 4.3.2
二、系统搭建
1. 下载相关软件包
Ø sam-ba_2.12.zip (镜像烧录工具)
此工具可从互联网上下载,从www.linux4sam.org下载需要注册。
( http://pan.baidu.com/s/1o6mHJfW )
Ø at91bootstrap-at91bootstrap-3.x.zip
https://github.com/linux4sam/at91bootstrap/tree/at91bootstrap-3.x
(http://pan.baidu.com/s/1hq1NgeK)
Ø u-boot-at91-u-boot-2013.07-at91.zip
https://github.com/linux4sam/u-boot-at91/tree/u-boot-2013.07-at91
(http://pan.baidu.com/s/1mgC4qwS)
Ø linux-at91-linux-2.6.39-at91.zip
https://github.com/linux4sam/linux-at91/tree/linux-2.6.39-at91
(http://pan.baidu.com/s/1mgC4qwS)
2. Bootstrap编译
根据bootstrap源码目录下的README.txt说明编译nand flash的镜像操作
1) # make mrproper
2) # make at91sam9260eknf_uboot_defconfig
提示“Permission denied”错误,此错误一般是由于可执行文件没有执行权限导致的,给相关可执行文件赋予执行权限即可,或给该文件夹下所有文件都赋予可执行权限。
# chmod +x * -R
3) 增加64MB NAND的支持,gedit ./driver/nandflash.c
4) # make menuconfig
提示找不到安装ncurses,使用yum安装相关工具。
# yum install ncurses-devel
修改以下几点配置:
a) Memory selection ---> NAND flash configuration --->
b) U-Boot Image Storage Setup --->
5) #make CROSS_COMPILE=arm-linux-
在http://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap中有以下说明:
# make CROSS_COMPILE=arm-none-linux-gnueabi-
编译成功!生成的文件在binaries目录下。
虽然可以编译成功,但下载到目标板上无法运行,连串口输出信息都没有。弄了很久都没有成功,也许使用高版本的Bootstrap对9260支持不太好,为了不影响总进度,先跳过这一步,使用Bootstrap V1.9进行移植。详细请参考《Bootstrap_V1.9移植.doc》。
3. U-BOOT编译
a) 根据UBOOT目录下的./doc/README.at91文档所述,用命令make at91sam9260ek_nandflash_config生成配置文件
b) 修改配置文件gedit ./include/configs/at91sam9260ek.h
i. 修改U-BOOT参数地址
ii. 去掉不必要的指令,只保留NAND指令即可
iii. 修改启动命令
“nand read.jffs2 0x22000000 0xA0000 0x200000; bootm”
完成后使用make开始编译。将生成的u-boot.bin烧写到NAND的0x00020000位置,并烧写前面生成的bootstrap。LINUX镜像暂时使用以前制作过的一个,烧到0xa0000位置。完成镜像烧写后重新启动开发板。在DEBUG窗口上可看到引导LINUX成功。
4. LINUX编译
a) 解压内核到当前目录
unzip -d ./ /media/sf_ShareDIR/source/linux-at91-linux-2.6.39-at91.zip
b) 进入内核源码根目录:make mrproper
c) 生成AT91SAM9260EK默认配置,配置文件在./arch/arm/configs/中
make ARCH=arm at91sam9260ek_defconfig
d) 进入menuconfig配置菜单
make ARCH=arm menuconfig
e) 板级配置
gedit ./arch/arm/mach-at91/board-sam9260ek.c
i. MTD分区配置
/* * NAND flash */ static struct mtd_partition __initdata ek_nand_partition[] = { { .name = "bootstrap", .offset = 0, .size = 128*1024, }, { .name = "uboot", .offset = 128*1024, .size = 256*1024, }, { .name = "env1", .offset = 128*1024+256*1024, .size = 128*1024, }, { .name = "env2", .offset = 512*1024, .size = 128*1024, }, { .name = "linux", .offset = 640*1024, .size = 2*1024*1024, }, { .name = "root", .offset = 640*1024+2*1024*1024, .size = 5*1024*1024, }, { .name = "user", .offset = 640*1024+7*1024*1024, .size = MTDPART_SIZ_FULL, }, }; |
f) 配置内核(make menuconfig)
i. 配置支持NFS
File systems --->Network File Systems --->
<*> NFS client support
[*] NFS client support for NFS version 3
[*] NFS client support for the NFSv3 ACL protocol extension
[*] NFS client support for NFS version 4
[*] NFS client support for NFSv4.1 (EXPERIMENTAL)
[*] Root file system on NFS
g) 生成U-BOOT引导的镜像
make ARCH=arm CROSS_COMPILE=arm-linux- uImage
提示没有安装mkimage工具,这个工具可以从U-BOOT目录下获取,并复制到/usr/bin目录下即可。
cp ../../2.u-boot/u-boot-at91-u-boot-2013.07-at91/tools/mkimage /usr/bin/
5. 通过U-BOOT的TFTP命令从TFTP服务器下载系统镜像
参考文档“CentOS下架设TFTP服务器.doc”架设服务器。修改UBOOT源码,使支持相关命令并设置服务器IP(这个设置较简单,这里省略)。
U-BOOT命令为:
setenv bootcmd 'tftp 0x22000000 /AT91SAM9260EK/uImage;bootm;'
复制内核镜像到TFTP目录:
# /bin/cp arch/arm/boot/uImage /opt/TFTP_DIR/AT91SAM9260EK/
6. 文件系统制作
文件系统使用以前为AM1808核心板制作的这个,压缩包为fs_lsh_20130320.tar.bz2(http://pan.baidu.com/s/1pJylrBX),详细制作方法可参考文档”AM1808核心板创建最小文件系统.doc”。
7. 挂载NFS作为根文件系统
a) 将文件系统解压到/opt/AT91SAM9260EK/4.FS/opt/AT91SAM9260EK/4.FS目录下,并重命名为NFS
# tar -xvf /media/sf_ShareDIR/source/fs_lsh_20130320.tar.bz2 -C /opt/AT91SAM9260EK/4.FS/
# mv /opt/AT91SAM9260EK/4.FS/fs_lsh/ /opt/AT91SAM9260EK/4.FS/NFS
b) 修改NFS配置文件
# gedit /etc/exports
配置:/opt/AT91SAM9260EK/4.FS/NFS *(rw,no_root_squash,no_all_squash,sync)
c) 重启NFS服务器
# service nfs restart
d) 测试NFS服务器是否成功启动
# mount -t nfs localhost:/opt/AT91SAM9260EK/4.FS/NFS /mnt/
# umount /mnt
e) 修改U-BOOT参数(可以在代码中固化,也可以在U-BOOT命令行中输入setenv命令进行设置)
setenv bootargs 'mem=64M console=ttyS0,115200 mac=00:60:6E:42:BA:80 root=/dev/nfs nfsroot=192.168.1.222:/opt/AT91SAM9260EK/4.FS/NFS ip=192.168.1.123:192.168.1.222:192.168.1.1:255.255.255.0:::eth0:off '
f) U-BOOT的网络参数设置,并打开PING命令(用于测试网络是否正常)
#define CONFIG_ETHADDR 10:23:45:67:89:AB
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.1.123
#define CONFIG_SERVERIP 192.168.1.222
g) 下载运行并进行内核修改
i. 提示如下图所示错误。经分析原因为无法与NFS服务器通讯,内核中的NFS功能已经都打开了,发现输出信息中,没有连接网络的相关执行,估计应该为网络驱动的问题。修改网络驱动配置后即可(此步骤在前面内核移植中已经配置过了)。
Menuconfig:
Device Drivers --->Network device support ---> Ethernet (10 or 100Mbit) ---> <*> Atmel MACB support
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
ii. 修改网络配置后,从打印信息中可以看出,已经可以挂载NFS文件系统了。目前系统停在了Kernel panic中。这种情况可能由于编译busybox时,使用的编译器版本引起的。打开以下内核配置即可解决。
Menuconfig:
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL) (NEW
Kernel panic - not syncing: Attempted to kill init!
iii. 现在已经可以成功挂载NFS文件系统了,运行到下图所示位置。提示IP地址设置失败,由于我没有故意去设置IP地址,还提示这个,所以怀疑是启动文件中进行重新设置,打开/etc/init.d/rcS文件,去除相关代码,只保留以下内容即可。
nfs: server 192.168.1.222 not responding, still trying
iv. 接下来运行出现无法打开串口的错误,如下图所示。控制台串口打开失败之类的错误,修改/etc/inittab文件中的控制台配置,将串口号改为console即可。
atmel_usart atmel_usart.2: Not supported ip name, set to uart
三、总结
到目前为止,已经可以正常启动LINUX操作系统了,并搭建了TFTP、NFS的开发环境。可以在此系统下方便地进行应用、驱动、内核的开发。各个代码打包后已经上传至网盘。
201407091104_at91sam9260ek_linux.2.6.39.tar.bz2
http://pan.baidu.com/s/1o6LTNRW
已根据“AT91SAM9260开发板驱动编写.doc”集成各个驱动的代码。
201407221308_Bootstrap-v1.9.tar.bz2
http://pan.baidu.com/s/1lK7EY
201407221321_u-boot-at91-u-boot-2013.07-at91.tar.bz2
\http://pan.baidu.com/s/1gdoYjp5
AT91SAM9260搭建LINUX操作系统相关推荐
- 【转载】15分钟搭建Linux操作系统+Oracle数据库的环境
2019独角兽企业重金招聘Python工程师标准>>> 一直想学习下Linux下Oracle数据库方面的运维,但从头安装Linux操作系统,再装Oracle数据库的过程确实非常繁琐, ...
- ZYNQ7000搭建嵌入式Linux操作系统---基础篇
ZYNQ7000搭建Linux操作系统 ZYNQ7000搭建嵌入式Linux操作系统 一.VIVADO工程的建立 二.VIVADO工程设置 三.在虚拟机环境下生成内核镜像uImage和uboot.el ...
- Linux期末复习考前走一走——何绍华Linux操作系统第3版
文章目录: 老师要求掌握 扩展 第一章 初识Linux 第二章 安装Linux操作系统 第三章 图形化界面与命令行 1.Linux图形化管理系统主要由以下两部分构成 2.了解KDE桌面组件 3.了解G ...
- linux 卸载yaf,LINUX操作系统怎么搭建YAF框架
如何在已经搭建好的php环境下,继续搭建yaf框架环境?那么小编就在本文给大家介绍下搭建方法 LINUX操作系统怎么搭建YAF框架 命令: wget 地址参考图片 命令: tar zxvf yaf-2 ...
- Linux操作系统搭建51单片机开发环境(国产桌面操作系统deepin)
1.概述 操作系统作为计算机系统的掌上明珠,一直是我们国家极力想要掌握的核心技术之一.随着这几年国际关系动荡,地缘政治风云突变的缘故,开发和应用国产操作系统热情空前高涨.尤其基于 Linux 的国产操 ...
- Linux操作系统下Moodle平台的搭建
转自http://fuwu.aieln.com/info/show/711/ 软件下载地址(Moodle2.2.2(Build:20120312)):http://bbs.aieln.com/arti ...
- 了解域名、域名系统及域名的解析过程以及Linux操作系统下DNS域名解析服务的搭建过程
1.什么是域名?什么是域名系统? **域名系统DNS(Domain Name System)**是因特网使用的命名系统,互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更 ...
- ZYNQ7000搭建嵌入式Linux操作系统---增加PL端外设(以太网)篇
ZYNQ7000搭建嵌入式Linux操作系统-增加PL端以太网 一.VIVADO工程建立 二.VIVADO工程设置 三.虚拟机下生成内核和uboot.elf 四.SDK生成设备树和BOOT.bin 五 ...
- Linux操作系统实践——Samba服务器搭建
文章目录 Linux操作系统实践--Samba服务器搭建 一.实验目的 二.实验内容 ② 学生教师服务 三. 题目分析及基本设计过程分析 ② 学生教师服务 1) 整体思路 2) 系统用户和组分配设计说 ...
- 深入浅出Linux操作系统搭建JavaEE环境(五)
✍.目录脑图 笔记参考视频为韩顺平老师的Linux2021年度课程:B站链接直达 深入浅出Linux操作系统
最新文章
- 星辰变鸿蒙武器,星辰变手游亲手打造极品光武 成就炼器宗师
- STM32 ADC 同步规则模式 ADC1与ADC2同用一个DMA
- android 4.x环境搭建
- 程序安装mysql数据库_安装Mysql数据库
- for循环里面有异步操作_JS 线程与异步的那些事
- 瀑布流ListView
- redis 实战面试
- NPM 常用命令和参数的意思
- matlab批量储存变量_Matlab批量赋值
- UEFI开发探索31–鼠标GUI构建
- 经典C语言程序设计100例
- 软件测试培训一般多少钱?
- HFSS仿真结果导出为SNP文件
- Sails基础之View层
- “金三银四” “金九银十”是找工作的好时期吗?疫情下的招聘季还会是金三银四、金九银十吗?
- myeclipse10 用破解补丁或注册机不能成功破解原因解析
- [转]全网最!详!细!tarjan算法讲解
- 4k显示器用html好还是dp,4k显示器用hdmi还是dp
- 5·12特别纪念 | 数据防“灾”,有“备”而来
- 二级网站域名怎么申请?
热门文章
- 学计算机的用hd620,hd620显卡能学C4D吗
- window计算机截屏快捷键,Win7系统电脑截图快捷键是什么?
- 大数据与人工智能方向基础课程简单介绍
- bootstraptable冻结列无效_Bootstrap Table 冻结列功能详解
- 如何解决(网页)粘贴数据到excel数据变换问题
- GitHub上的那些LGTM和WIP代表什么
- html怎么给表头加斜线,如何为Excel中的表格表头添加斜线和文字?这才是正确的添加方式-excel表格斜线...
- 9700usb网卡 linux驱动,0fe6:9700 usb网卡,终于编译成功驱动。
- Web前端案例_QQ登录界面实现
- DHT11温湿度传感器(zigbee)