• 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. ALGO-117_蓝桥杯_算法训练_友好数

    问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:+= 4的约数和有:+= 所以9和4不是友好的. 220的约数和有: = 284的约 ...

  2. 《剑指offer(第二版)》面试题55——判断是否为平衡二叉树

    一.题目大意 输入一颗二叉树,判断该二叉树是否为平衡二叉树(AVL树). 二.题解 <剑指offer>上给出了两种解决方式: 1.第一种是从根节点开始,从上往下遍历每个子节点并计算以子节点 ...

  3. git撤销本地所有未提交的更改

    1. git clean -df2. git reset --hard第一个命令只删除所有untracked的文件,如果文件已经被tracked, 修改过的文件不会被回退.而第二个命令把tracked ...

  4. 使用R语言-操作data.frame

    1 向一个data.frame指定列插入一列新数据 1.1 插入一列到指定位置 y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8) ...

  5. [UE4]地图缩放

    一.创建一个设置UI比例尺的函数 二.通过Get Cached Geometry获得当前UI实际显示的尺寸,Get Desired Size获得当前UI原始尺寸,计算得到UI缩放比例尺 三.地图比例尺 ...

  6. [UE4]Lock Always

    创建一个Widget加到视图,指定为鼠标焦点,并显示鼠标 Lock Always:叫鼠标锁定在游戏窗口内.

  7. C# 知识特性 Attribute,XMLSerialize,

    C#知识--获取特性 Attribute 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,可在运行时使用“反射”查询特性,获取特性集合方 ...

  8. sas 获取字符串长度实例

    data _null_;a='Dogcat';b=' Dog cat';c=' Dog cat   ';Ra=length(a);Rb=length(b);Rc=length(c);put Ra=Rb ...

  9. [TFS]TFS2015禁止多人迁出设置

  10. module 'pip' has no attribute 'pep425tags'

    AMD64 import pip._internal print(pip._internal.pep425tags.get_supported()) 1 2 WIN32 import pip prin ...