• Vim的安装

  

sudo apt-get install vim

  等待安装完成后我们来配置简单配置vim的配置文件

vim /etc/vim/vimrc

(备注:自己一个人使用的^-^)
  在原来的基础上添加保存退出

 " 在窗口标题栏显示文件名称
set title
" 编辑的时候将所有的 tab 设置为空格
set tabstop=
"设置自动对齐空格数
set shiftwidth=
"显示行号
set number
"搜索时高亮显示
set hlsearch
"不区分大小写
set ignorecase
"语法高亮
syntax on
  • 安装交叉编译器 gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2

    sudo tar xjvf gcc-4.4.-glibc-2.11.-multilib-.0_EasyARM-iMX283.tar.bz2 -C /opt/
  • 还需将该路径添加到 PATH环境变量中,其方法为:修改“/etc/profile”文件,具体操作方法如下

sudo vim /etc/profile

用 vim 编辑器打开“/etc/profile”文件后,在文件末尾增加如下一行内容:

export PATH=$PATH:/opt/gcc-4.4.-glibc-2.11.-multilib-1.0/arm-fsl-linux-gnueabi/bin/

文件修改并保存后,再在终端中输入如下指令,更新环境变量,使设置生效

source /etc/profile 

备注也可以在~/.bashrc里面。或者在~/.bashrc里面加一句source /etc/profile

兼容32位库(不同系统版本的指令有差异的)

sudo apt-get install ia32-libs  

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

测试一下:

1、打印PATH信息

2、在终端输入arm-fsl-linux-gnueabi-并按TAB键,如果能够看到很多arm-fsl-linux -gnueabi-前缀的命令

3、查看arm-fsl-linux-gnueabi-gcc版本信息

lin@lin-machine:~$ vim /etc/profile
lin@lin-machine:~$
lin@lin-machine:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/gcc-4.4.-glibc-2.11.-multilib-1.0/arm-fsl-linux-gnueabi/bin/
lin@lin-machine:~$ arm-fsl-linux-gnueabi-
arm-fsl-linux-gnueabi-addr2line arm-fsl-linux-gnueabi-gprof
arm-fsl-linux-gnueabi-ar arm-fsl-linux-gnueabi-ld
arm-fsl-linux-gnueabi-as arm-fsl-linux-gnueabi-ldd
arm-fsl-linux-gnueabi-c++ arm-fsl-linux-gnueabi-nm
arm-fsl-linux-gnueabi-cc arm-fsl-linux-gnueabi-objcopy
arm-fsl-linux-gnueabi-c++filt arm-fsl-linux-gnueabi-objdump
arm-fsl-linux-gnueabi-cpp arm-fsl-linux-gnueabi-populate
arm-fsl-linux-gnueabi-ct-ng.config arm-fsl-linux-gnueabi-ranlib
arm-fsl-linux-gnueabi-g++ arm-fsl-linux-gnueabi-readelf
arm-fsl-linux-gnueabi-gcc arm-fsl-linux-gnueabi-run
arm-fsl-linux-gnueabi-gcc-4.4. arm-fsl-linux-gnueabi-size
arm-fsl-linux-gnueabi-gccbug arm-fsl-linux-gnueabi-strings
arm-fsl-linux-gnueabi-gcov arm-fsl-linux-gnueabi-strip
arm-fsl-linux-gnueabi-gdb
lin@lin-machine:~$ arm-fsl-linux-gnueabi-gcc -v
Using built-in specs.
Target: arm-fsl-linux-gnueabi
Configured with: /work/arm-toolchains/tmp/src/gcc-4.4./configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-fsl-linux-gnueabi --prefix=/work/arm_fsl_gcc_4..4_multilib --with-sysroot=/work/arm_fsl_gcc_4..4_multilib/arm-fsl-linux-gnueabi/multi-libs --enable-languages=c,c++ --with-pkgversion=4.4.4_09.06.2010 --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-mpfr=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-ppl=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --with-cloog=/work/arm-toolchains/tmp/arm-fsl-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-prefix=/work/arm_fsl_gcc_4..4_multilib/arm-fsl-linux-gnueabi/multi-libs --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long --enable-multilib --with-system-zlib --enable-lto
Thread model: posix
gcc version 4.4. (4.4.4_09.06.2010)

来测一个文件的编译

vim hello.c

代码内容如下

#include <stdio.h>
int main(void)
{
int i;
for (i=; i<; i++) {
printf("Hello %d!\n", i);
}
return ;
}

保存退出

查看当前的文件

lin@lin-machine:~$ ls
bootloader Documents Music Templates
bootloader-v1..tar.bz2 Downloads Pictures Videos
Desktop examples.desktop Public vmware-tools-distrib
lin@lin-machine:~$ vim hello.c
lin@lin-machine:~$ ls
bootloader Downloads Pictures vmware-tools-distrib
bootloader-v1..tar.bz2 examples.desktop Public
Desktop hello.c Templates
Documents Music Videos

编译

lin@lin-machine:~$ arm-fsl-linux-gnueabi-gcc hello.c -o hello

再使用ls查看一下

lin@lin-machine:~$ ls
bootloader Downloads Music Videos
bootloader-v1..tar.bz2 examples.desktop Pictures vmware-tools-distrib
Desktop hello Public
Documents hello.c Templates

使用file来查看hello文件

lin@lin-machine:~$ file hello
hello: ELF -bit LSB executable, ARM, EABI5 version (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6., not stripped
  •   编译 U-Boot

先解压当前文件bootloader-v1.13.tar.bz2

tar -jxvf bootloader-v1..tar.bz2 

解压完成后

 cd bootloader/ 

我们cd elftosb/
在elftosb文件夹中添加elftosb_install.sh

其具体代码如下

echo " menu, please select your choice:"
echo " 1 检测系统是多少位,自动安装"
echo " 2 系统为32位选择elftosb_32bit"
echo " 3 系统为64位选择elftosb_64bit"
echo " q exit" i686fun() {
echo "系统为32位选择elftosb_32bit"
echo "/////////////////////////////"
cp elftosb_32bit elftosb
sudo cp elftosb /usr/bin/
sudo chmod /usr/bin/elftosb
sudo ls /usr/bin/ -li |grep elftosb
echo "/////////////////////////////"
} x86_64fun() {
echo "系统为64位选择elftosb_64bit"
echo "/////////////////////////////"
cp elftosb_64bit elftosb
sudo cp elftosb /usr/bin/
sudo chmod /usr/bin/elftosb
sudo ls /usr/bin/ -li |grep elftosb
echo "/////////////////////////////"
} autofun() { echo "如何查看自己运行ubuntu是32位还是64位"
echo "如果显示i686,你安装了32位操作系统"
echo "如果显示 x86_64,你安装了64位操作系统"
uname --m unameOut="$(uname --m)"
case "${unameOut}" in
i686*) i686fun;;
x86_64*) x86_64fun;;
*) echo "UNKNOWN:${unameOut}"
esac
} read sel
echo "select $sel" case $sel in
[]) autofun;;
[]) i686fun;;
[]) x86_64fun;;
[q]) exit ;;
*) echo "ONLY accept 1/2/3/q/Q"
esac

该脚本主要作用:是进行 u-boot 转换前需要先将 elftosb 目录下的“elftosb_32bit 或 elftosb_64bit”文件为原型复制一个为“elftosb”并复制到“/usr/bin/”目录下(请以用户搭建的 Linux 上位机系统位宽为准)。复制完后需要给 elftosb 赋予可执行的权限。

修改改脚本的权限

lin@lin-machine:~/bootloader/elftosb$ chmod  elftosb_install.sh
lin@lin-machine:~/bootloader/elftosb$ ls -li | grep elftosb_install.sh
-rwxrwxrwx lin lin 12月 : elftosb_install.sh

执行一下该脚本

lin@lin-machine:~/bootloader/elftosb$ ./elftosb_install.sh
menu, please select your choice:
检测系统是多少位,自动安装
系统为32位选择elftosb_32bit
系统为64位选择elftosb_64bit
q exit select
如何查看自己运行ubuntu是32位还是64位
如果显示i686,你安装了32位操作系统
如果显示 x86_64,你安装了64位操作系统
x86_64
系统为64位选择elftosb_64bit
/////////////////////////////
[sudo] password for lin:
-rwxrwxrwx root root 12月 : elftosb
/////////////////////////////

我们现在cd u-boot-2009.08/后执行./build-uboot

lin@lin-machine:~/bootloader$ cd u-boot-2009.08/
lin@lin-machine:~/bootloader/u-boot-2009.08$ ls
\ config.mk examples lib_generic lib_ppc mkuboot.sh sbtool
api COPYING fs lib_i386 lib_sh nand_spl si
board cpu include lib_m68k lib_sparc net tools
build-uboot CREDITS lib_arm lib_microblaze MAINTAINERS onenand_ipl u-boot.lds
CHANGELOG disk lib_avr32 lib_mips MAKEALL post u-boot.map
CHANGELOG-before-U-Boot-1.1. doc lib_blackfin lib_nios Makefile README uboot_wdg.patch
common drivers libfdt lib_nios2 mkconfig rules.mk
lin@lin-machine:~/bootloader/u-boot-2009.08$ ./build-uboot
U-Boot build menu, please select your choice:
1 make distclean
2 config for mx28
3 build U-Boot
q exit

【备注】红色部分为脚本执行时的选择菜单。当出现该菜单时,输入对应的数字并按回车键即可。其中“build U-Boot”选项已经包含了将 u-boot 复制到 imx-bootlets-src-10.12.01 工程进行编译的操作,最终的编译结果位于 imx-bootlets-src-10.12.01 工程目录下。

我们来查看一下/imx-bootlets-src-10.12.01/有那些文件。

lin@lin-machine:~/bootloader/u-boot-2009.08$ cd ../imx-bootlets-src-10.12./
lin@lin-machine:~/bootloader/imx-bootlets-src-10.12.$ ls
boot_prep imx28_ivt_linux.sb initramfs.cpio.gz mach-mx23 si uImage
build imx28_ivt_uboot.sb linux.bd mach-mx28 u-boot updater.bd
build_updater imx28_linux.sb linux_ivt.bd Makefile uboot.bd updater_ivt.bd
elftosb imx28_uboot.sb linux_prep power_prep uboot_ivt.bd zImage

补充一下

制作 imx28_ivt_linux.sb 固件首先需求制作出来 zImage 文件,其来自下面的路径的

lin@lin-machine:~/linux-2.6.35.3/arch/arm/boot$ ls
bootp compressed Image install.sh Makefile uImage zImage

现在介绍一下如何生产这个 zImage文件。

现在我们先删除原来zImage

回到~/linux-2.6.35.3

设置内核对应的型号

输入“make zImage”命令进行编译

现在我们看编译完成后将在 arch/arm/boot/目录下生成 是否生产新的zImage 文件

将zimage复制到 ~/bootloader/imx-bootlets-src-10.12.01

cp arch/arm/boot/zImage ../bootloader/imx-bootlets-src-10.12.01

如果出现

安装mkimage使用指令

 sudo apt-get install u-boot-tools

或者将~/bootloader/u-boot-2009.08/tools/mkimage 复制到/usr/bin/mkimage

lin@lin-machine: ~/bootloader/u-boot-2009.08/tools$ sudo cp mkimage /usr/bin/ 

我们编译内核

在“linux-2.6.35.3”目录下执行“make uImage”命令即可编译。编译完成后将在“arch/arm/boot”目录下生成内核固件 uImage。

同样我们将uImage复制到 ~/bootloader/imx-bootlets-src-10.12.01

cp arch/arm/boot/uImage ../bootloader/imx-bootlets-src-10.12.01 

如果使用 USB 方式烧写到 EasyARM-iMX283 的 NAND Flash 时,请把该固件文件替换到 MtgTool  程序的“Profiles\MX28 Linux Update\OS Firmware\files”目录

【注意】

Linux 内核启动时,是需要传入启动参数的;Linux 内核是由 U-Boot 引导启动时,启动参数是由 U-Boot 传递的。但是若系统直接从 Linux 内核启动,启动参数是由谁的传递呢?其实 imx28_ivt_linux.sb 固件中不单包含了 Linux内核代码,还包含了一段引导代码。当系统从 imx28_ivt_linux.sb 固件启动时,是先执行这一段引导代码。这段引导代码任务包含了初始化电源和一部分硬件设备,以及给即将启动的 Linux内核传递启动参数。

那么启动参数用户如何来自定义呢?

在 imx-bootlets-src-10.12.01 目录下 linux_prep/cmdlines/iMX28_EVK.txt文件内容如下:

gpmi=g console=ttyAM0,115200n8 console=tty0 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs fec_mac= ethact

linux_prep/board/iMX28_EVK.c文件的 cmdline_def变量(在该文件的最后一行)的值为:

char cmdline_def[] = "gpmi=g console=ttyAM0,115200n8 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs fec_mac=ethact";

当用户需要修改 imx28_ivt_linux.sb 的启动参数时,这两个地方也要修改。

当用户需要修改 imx28_ivt_linux.sb 的启动参数时,这两个地方均要修改,而且内容要保持一致。
注意:固件由于更新,可能导致参数可能会不同,如果ubi.mtd 的值不为 5,请修改为 5,文件系统分区是位于 mtd5 分区,这样才能正常启动文件系统。

EasyARM-iMX283A的Linux 开发环境构建的更多相关文章

  1. 嵌入式linux开发环境构建

    2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...

  2. 20145213《信息安全系统设计基础》实验一 Linux开发环境的配置

    北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号:20145213 20145222 成绩: 指导教师:娄嘉鹏 实验日期:2016 ...

  3. 用Windows+VirtualBox搭建嵌入式Linux开发环境

    Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...

  4. 信息安全系统设计基础实验一:Linux开发环境的配置和使用

    北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础    班级:1353 姓名:芦畅 傅冬菁 学号:20135308 20135311 成绩:       指导教师:娄家鹏      ...

  5. 熟悉linux开发环境(实验)

    北京电子科技学院(BESTI) 实验报告 课程: 深入理解计算机系统 班级: 1353班 姓名:张若嘉 杨舒雯 学号:20135330 20135324 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...

  6. 一步步学习Linux开发环境搭建与使用

    00.Linux开发环境搭建与使用1--Linux简史 01.Linux开发环境搭建与使用2--Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3--通过虚拟机安装系统(ub ...

  7. Linux开发环境的搭建和使用——Linux本必备软件SSH

    SSH 至 Secure Shell 缩写.由 IETF 网络工作组(Network Working Group)开发:SSH 以建立应用层和传输层安全协议中的基础上. SSH 是眼下较可靠,专为远程 ...

  8. 利用 WSL 在 Windows下打造高效的 Linux 开发环境

    WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...

  9. Django Python MySQL Linux 开发环境搭建

    Django Python MySQL Linux 开发环境搭建 1.安装Python 进行Python开发,首先必须安装python,对于linux 或者Mac 用户,python已经预装. 在命令 ...

随机推荐

  1. springboot(二 如何访问静态资源和使用模板引擎,以及 全局异常捕获)

    在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static / ...

  2. Java学习——Applet画8个同心圆

    import java.awt.*; import java.applet.*; public class GUI3 extends Applet{ public void paint(Graphic ...

  3. android studio AIDL 编译时 错误:找不到符号

    原贴路径:http://blog.csdn.net/baidu_30164869/article/details/51036405 PS:在android studio中 当将java文件放到aidl ...

  4. 俞敏洪:我创业24年感悟的3条CEO守则

    转自:http://www.gamelook.com.cn/2017/10/306603 创业24年,他的创业经历被拍成了电影.在一次小范围聚会时,他说现实远比剧本要精彩.“如果让我一切从头开始,我会 ...

  5. 第8章 传输层(7)_TCP连接管理

    7. TCP连接管理 7.1 TCP的连接建立 (1)三次握手 ①三次握手过程 A.第1.2次握手,数据包的SYN均为1,表示用于同步.即第1次客户端发起请求,并将自己的连接参数(如接收窗口大小.MS ...

  6. c#数组去重

    第一种: string[] stringArray = { "aaa", "bbb", "aaa", "ccc", &q ...

  7. PHP微信公众号开发之自动回复

    先把源码类发出来 <?php /** 自己封装 微信 开发api */ header('Content-type: text/html; charset=utf-8');#设置头信息 class ...

  8. Java - 25 Java 包(package)

    Java 包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包 ...

  9. SQL Server 2016:内存列存储索引

    作者 Jonathan Allen,译者 谢丽 SQL Server 2016的一项新特性是可以在“内存优化表(Memory Optimized Table)”上添加“列存储索引(Columnstor ...

  10. redis中key过期事件

    刚到新公司一个月左右,有个新需求,想做定时任务,比如在用户注册时间的3天后推送用户一条消息. 从刚开始脑子里面闪现的数据库轮询,立马否定掉(浪费资源),再到linux系统的定时任务,但是当用户量过大时 ...