手把手教你从头开始搭建友善之臂ARM-tiny4412开发环境(史上最详细!!)
创建一个ARM目录
mkdir /disk/A9 -p
接下来你需要准备以下的东西
1、arm-linux-gcc-4.5.1 交叉编译器
2、linux-3.5-tiny4412 内核
3、rootfs_qtopia_qt4-20140124.tar.gz QT文件系统 (做好的)
4、busybox-1.22.1.tar.bz2 文件系统原码 busybox
5、uboot_tiny4412-20130729.tgz uboot
6、arm-qte-4.8.5-20131207.tar.gz QT原码 ARM
7、uboot_tiny4412-20130729.tgz 对应的4412uboot源码
8、minicon 串口
9、安装dnw ,需要上网搜索dnw下载并安装到系统
10、一张SD卡、一条串口线、一根dnw线、一根网线
好了,该准备的我们都准备好了,接下来看如何把开发环境搭建好。
1.安装交叉编译器
cd /disk/A9
tar -xvf arm-linux-gcc-4.5.1
ls opt
FriendlyARM
cp opt/FriendlyARM /opt -r
ls /opt/FriendlyARM/toolschain/4.5.1/bin/
拷 /opt/FriendlyARM/toolschain/4.5.1/bin/
vim ~/.bash_profile
在PATH=$PATH:$HOME/bin下面加上
PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin/
保存退出 ctrl +Alt + backspace 注销
测试是否安装成功 arm- tab tab 可以列出所有的交叉编译器就成功
2.编译uboot
cd /disk/A9
tar -xvf uboot_tiny4412-20130729.tgz
cd uboot_tiny4412
make tiny4412_config
make 生成u-boot.bin u-boot 文件
3.将编好的u-boot.bin烧写到SD卡
1>插入SD卡
2>D卡
dd if=/dev/zero of=/dev/sdb bs=1024 count=102400
3>烧写
cd /disk/A9/uboot_tiny4412/sd_fuse
make
cd tiny4412
./sd_fusing.sh /dev/sdb
烧写完毕
配置minicom
在命令行中输入:
minicom -s
┌─────[configuration]──────┐
│ Filenames and paths
│ File transferprotocols
│ Serial port setup <== 选择这一项
│ Modem and dialing
│ Screen and keyboard
│ Save setup as dfl
│ Save setup as..
│ Exit
│ Exit from Minicom
└──────────────────────────┘
按如图所示配置
┌───────────────────────────────────────────────────────────────────────┐
│ A - Serial Device : /dev/ttyUSB0
│ B - Lockfile Location : /var/lock
│ C - Callin Program :
│ D - Callout Program :
│ E - Bps/Par/Bits : 115200 8N1
│ F - Hardware Flow Control : No
│ G - Software Flow Control : No
│
│ Change which setting?
└───────────────────────────────────────────────────────────────────────┘
改成这样
enter
Save setup as dfl 保存成默认
Exit 退出
退出minicom
ctrl + a + q 退出
然后开机界面可以看到以下打印信息:
U-Boot 2010.12 (Oct 13 2015 - 11:03:50) for TINY4412
CPU: S5PC220 [Samsung SOC on SMPPlatform Base on ARM CortexA9]
APLL = 1400MHz, MPLL = 800MHz
Board: TINY4412
DRAM: 1023 MiB
vdd_arm: 1.2
vdd_int: 1.0
vdd_mif: 1.1
BL1 version: N/A (TrustZone EnabledBSP)
Checking Boot Mode ... SDMMC
REVISION: 1.1
MMC Device 0: 3724 MB
MMC Device 1: 7456 MB
MMC Device 2: N/A
*** Warning - using default environment
Net: No ethernet found.
Hit any key to stop autoboot: 0
TINY4412 #
内核移殖
编好内核 zImage 给uboot引导
cd /disk/A9
ls linux-3.5-tiny4412
tar -xvf linux-3.5-tiny4412
cd linux-3.5
cp tiny4412_linux_defconfig .config
make
最后出现
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
编译成功
arch/arm/boot/zImage
安装DNW
cd /disk/A9/dnw-linux
make
make install
一 . 利用dnw方式下载内核
1> minicom中
dnw 0x40008000
2> PC中
cd /disk/A9/linux-3.5
dnw arch/arm/boot/zImage
成功下载内核到板子
3>引导内核 ==> 启动内核
bootm 0x40008000
二 . SD卡下载内核
1> 关电取出SD卡,并将PC机上的内核zImage拷到SD卡上的第一个分区 fat32
2> 将SD卡插入开发板并且开机
3> 查看SD卡上的内核
fatls mmc 0:1 / //查看第0个MMC设备 第一个分区 的分区目录
4> 读取SD卡上的内核
fatload mmc 0:1 0x40008000 zImage
5> 引导内核
bootm 0x40008000
三 . 自动读取SD卡上的内核并且启动
在minicom中
set bootcmd "fatload mmc 0:10x40008000 zImage;bootm 0x40008000"
save
reset 查看是否会自动启动内核
四. movi 内核启动
1> DNW下载内核到板子uboot 地址0x40008000
2>写内核
movi write kernel 0 0x40008000
3> 设置自动启动
set bootcmd "movi read kernel 0 0x40008000;bootm 0x40008000"
4> reset 自动启动内核
烧写文件系统
1> 网络文件系统
cd /disk/A9
tar -xvf busybox-1.22.1.tar.bz2
cd busybox-1.22.1
make defconfig //默认配置
make menuconfig
Busybox Settings --->
[*] Build BusyBox as a static binary (no shared libs) │
[*] Build BusyBox as a positionindependent executable (NEW) │
[ ] Force NOMMU build │
[ ] Build shared libbusybox (NEW) │
[*] Build with Large File Support (for accessing files > 2 GB) │
(arm-linux-) Cross Compiler prefix
保存退出
make -j4
make install 会生成一个目录 _install
制作文件系统
cd /disk/A9
mkdir filesystem
cd /disk/A9/filesystem
cp /disk/A9/busybox-1.22.1/_install/* .-r
mkdir etc dev opt sys tmp mnt lib proc
mkdir etc/init.d
vim etc/init.d/rcS
添加
mount -t ramfs none /dev
mount -t sysfs none /sys
mount -t proc none /proc
mount -t tmpfs none /tmp
/sbin/mdev -s
保存退出
vim etc/inittab
添加
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
保存退出
vim etc/profile
添加
export PS1="[root @ cjy \W ] #"
保存退出
mknod dev/console c 5 1
cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./lib -r
cd ..
给权限
chmod 777 filesystem -R
发布文件系统
vim /etc/exports
添加
/disk/A9/filesystem *(rw,sync,no_root_squash)
保存退出
检查文件系统是否已经发布
showmount -e 192.168.88.xxx
//板子上配置IP还有bootargs
set gatewayip 192.168.88.1
set ipaddr 192.168.88.x //板子的IP
set serverip 192.168.88.xxx //PC机IP
save
set bootargs "root=/dev/nfsnfsroot=192.168.88.xxx:/disk/A9/filesystem
ip=192.168.88.x console=ttySAC0,115200 lcd=S70 ctp=2"
save
reset 查看是否进入文件系统
//************************************************************
SD卡文件系统
一>
将/disk/A9/filesystem 拷到 SD卡上的 第四个分区
板子
1> 保存nfsbootargs
set nfsbootargs $bootargs
save
2>
set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2"
save
3>
reset 查看是否进入SD卡文件系统
二>
先进入网络文件系统
挂载出SD卡的第四个分区
mount /dev/mmcblk0p4 /mnt
打包现有的文件系统
cd /disk/A9/filesystem
tar -cf nfs.tar *
tar -xvf nfs.tar -C /mnt
umount /mnt
板子
2>
set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2"
save
3>
reset 查看是否进入SD卡文件系统
最后一个
将文件系统直接烧录到板子上的mmc
1.
将uboot烧写进去
dnw E4412_N.bl1.bin
先进入SD卡的uboot
2.
emmc open 1
// 1板子上的MMC 0x40008000从哪里读 0起始块地址 0x10大小
3.
mmc write 1 0x40008000 0 0x10
dnw bl2.bin
4.
mmc write 1 0x40008000 0x10 0x1C
dnw u-boot.bin
5.
mmc write 1 0x40008000 0x300x1F6
6.
emmc close 1
7.
段电,拔SD卡,选择NAND启动,上电看是否进入板子MMCuboot
烧写MMC 内核
dnw arch/arm/boot/zImage
movi write kernel 0 0x40008000
set bootcmd "movi read kernel 00x40008000;bootm 0x40008000"
save
//分区板子上的MMC
fdisk -p 0 查看分区信息
创建分区
fdisk -c 1000 500 500
直接进入网络文件系统
set bootargs"root=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
save
进入系统之后
mount /dev/mmcblk0p2 /mnt
tar -xvf nfs.tar -C /mnt
chmod 777 /mnt/ -R
umount /mnt
u-boot内
set bootargs"root=/dev/mmcblk0p2 console=ttySAC0,115200 lcd=S70 ctp=2"
save
reset 启动MMC内的文件系统
手把手教你从头开始搭建友善之臂ARM-tiny4412开发环境(史上最详细!!)的更多相关文章
- 手把手教你使用 VuePress 搭建个人博客
手把手教你使用 VuePress 搭建个人博客 有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunchencc/vu ...
- 手把手教你认识并搭建Nginx
手把手教你认识并搭建Nginx Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor ...
- 手把手教你用vue-cli搭建vue项目
手把手教你用vue-cli搭建vue项目 本篇主要是利用vue-cli来搭建vue项目,其中前提是node和npm已经安装好,文章结尾将会简单提到一个简单的例子.使用vue-cli搭建项目最开始我也是 ...
- 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群
手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...
- 手把手教你用webpack3搭建react项目(开发环境和生产环境)(一)
开发环境和生产环境整个配置源码在github上,源码地址:github-webpack-react 如果觉得有帮助,点个Star谢谢!! (一)是开发环境,(二)是生产环境. 一.首先创建packag ...
- 手把手教你用Python搭建自己的量化回测框架【均值回归策略】
手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...
- SpringCloud学习之手把手教你用IDEA搭建入门项目(三)
本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(二)>,不清楚的请到我的博客空间查看后再看本篇博客,上面两篇博客成功创建了一个简单的SpringCloud项目 ...
- SpringCloud学习之手把手教你用IDEA搭建入门项目(二)
本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(一)>,不清楚的请到我的博客空间查看后再看本篇博客 1)先创建一个Eureka服务注册中心模块,用来作为服务的 ...
- SpringCloud学习之手把手教你用IDEA搭建入门项目(一)
SpringCloud简单搭建 jdk:1.8开发工具:IDEA注:需要了解springcloud 1.创建最简单的Maven项目 1)开始创建一个新的项目 2)创建一个空模板的maven项目,用 ...
随机推荐
- SQL Server 索引维护(1)——系统常见的索引问题
前言: 在很多系统中,比如本人目前管理的数据库,索引经常被滥用,甚至使用DTA(数据库引擎优化顾问)来成批创建索引(DTA目前个人认为它的真正用处应该是在发现缺失的统计信息,在以前的项目中,用过一次D ...
- 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)
限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事:(1)不同语言字符(英文.中文等)处理方式(2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多 ...
- Retrofit2.0 ,OkHttp3完美同步持久Cookie实现免登录(二)
原文出自csdn: http://blog.csdn.net/sk719887916/article/details/51700659: 通过对Retrofit2.0的<Retrofit 2.0 ...
- Unity插件 - MeshEditor(七)变形动画骨骼及蒙皮
MeshAnimation在物体的顶点比较多的情况下,悲剧是显而可见的,我一个一个的点选顶点肯定得累死,而且对于形态的调控不是很方便,应该说是很麻烦,要知道,骨骼动画因为有了骨骼以及蒙皮信息而有了灵魂 ...
- Linux Debugging(八): core真的那么难以追踪吗?
本周遇到了好几个core都很有典型性.在这里和大家分享下. 相信有过Linux编程经验的人,肯定都遇到过.感觉周围人很多对core有天然的恐惧感,尤其对刚入行不久的同学来说.当然了,也有工作好几年看到 ...
- FFmpeg示例程序合集-Git批量获取脚本
此前做了一系列有关FFmpeg的示例程序,组成了<FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player: 最简单的 ...
- 文章标题 Oracle数据库中dual表使用
一. 业务场景 业务流程需要进行写入和更新的比较,所以有原表和历史表. 要求表中的ID唯一性,以及两张表的ID关联,另外后续可能数据库会进行迁移 二.方案选择 方案一:id设置为int型自增长. 这种 ...
- 高斯函数 --> 高斯分布(正态分布)
具有如下形式的函数就是高斯函数. 其中a,b,c都是实数常数,a大于0 .由于在博客中写数学公式比较麻烦,还是直接放照片吧. 字写的很难看,不过应该可以看清楚.:(
- 【一天一道LeetCode】#237. Delete Node in a Linked List
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...
- Cocos2D中的纹理(textures)的解释
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...