ARM Cortex-A9 (tiny 4412)
要求
移植linux增加系统调用并烧写至开发板
详细步骤
一、搭建linux编译环境
1、GCC 编译器的安装:
tar xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C/
arm-linux-gcc -v //查看GCC版本
2、gedit ~/.bashrc
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
3、reboot -p 重启
4、cp -f tiny4412_android_defconfig .config
make -->编译
5、安装libz.so
yum install zlib.i686
6、挂载红帽6.4iso镜像
mount -o loop rhel-server-6.4-x86_64-dvd.iso /mnt
yum install zlib.i686
编译 --> make
1)配置yum:
root@localhost 桌面]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
rhel-source.repo
[root@localhost yum.repos.d]# cp rhel-source.repo my.repo
gedit my.repo
[rhel-source]
name=rhel-source
baseurl=file:///mnt
enabled=1
gpgcheck=0
挂载红帽6.4镜像mount -o loop rhel-server-6.4-x86_64-dvd.iso /mnt
yum install zlib.i686 (for libz.so ,when build linux)
yum install minicom*
yum install ncurses*.i686 (for libncurses.so, when install adb)
yum install libstdc++.i686 (for libstdc++.so,when build android)
2)minicom串口通信工具的安装:
arm-linux-gcc交叉编译环境搭建:
FriendlyARM/tiny4412
yum install minicom*
cd /usr/bin ls /dev/ttyu*
minicom -s 修改默认设备名为ttyUSB0 硬件设备控制关掉 SAVE
开着minicom, 开关板子会出现log
烧写SD启动卡:
(1)、红帽6.4系统下插入事先准备好的SD卡;
查看SD卡设备信息,确定设备别名(重要!不可弄错) :
查看SD卡信息 fdisk -l
Ls sd /dev/sd* -ll //此处SD卡设备名为sdb

(2)、对SD 卡进行分区 ;
先删除SD卡所有分区:
Fdisk /dev/sdb
命令选项
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
d 删除所有分区
(3)、p 新建1个主分区
分区前需留100M给Supperboot
公式:
SD卡内存*1024M:内存柱数=100M:起始柱面数

如图2 所示32G SD卡总柱面为19165,套用以上公式计算起始柱面为58;
(4)、修改分区的system id 选择 t
(5)、选择分区类型
l -类型清单
b -在此只能选择FAT32格式
(6)、输入w保存退出
(7)、格式化分区
mkfs.vfat /dev/sdb
(8)、烧写boot程序
sync 执行一下同步命令
(9)、把 image 复制到SD卡中 SD启动卡即制作完成
将SD卡插到板子上进行烧机
二、 搭建NFS文件系统环境
1、 安装minicom
配置yum安装源并安装 yum install minicom
2、 配置PC 端NFS服务
1)关闭PC端防火墙 setup

保存退出
临时关闭 iptables service iptables stop
关闭selinux setenforce 0
查看selinux并修改SELINUX =disabled
gedit /etc/selinux/config
2)写NFS配置文件
gedit /etc/exports
/uplookingroot *(rw,sync,no_root_squash)
3)在PC上建立目录 /uplookingroot
用网线连接PC和板子
重启PC reboot -p
4)启动NFS服务 service nfs restart
5)配置IP地址 ifconfig eth0 192.168.1.10 up
测试PC 板子之间的连接 ping 192.168.1.20
6)进入板子 minicom .....
7)挂载目录
mount -t nfs -o nolock,rw 192.168.1.10:/uplookingroot /mnt
8)PC端在/uplookingroot 内编写要传输的文件 minicom端口可见
板子下:cd /mnt
[root@localhost mnt]# ls //可见文件 Hello.c
dnw工具的安装:
tar xzvf dnw-linux.tar.gz
cd dnw-linux/
make
退出挂载 umount /mnt
三、 修改linux内核,增加新的系统调用
1、 解压编译linux源代码,测试当前源代码是否可执行
[root@localhost / ]# tar xzvf linux-3.5-20150121.tgz
cp tiny 4412_linux_defconfig .config
make -j4
ls arch/arm/boot/zImage -ll

2、将zImage拷贝到网络启动的SD卡刷机 //SD卡刷机见一
1)SD卡使用Superboot
[root@localhost install]# ./write4412boot Superboot4412.bin /dev/sdc
start ...........
end .....……
2)同步 sync
3)nfs 环境 //参考二
3、修改linux3.5源码增加系统调用
1) 修改calls.S
[root@localhost linux-3.5]# gedit arch/arm/kernel/calls.S
/* 378 */ CALL(sys_add)
2)gedit /linux-3.5/arch/arm/include/asm/unistd.h
©#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377)
©#define __NR_add (__NR_SYSCALL_BASE+378)
3)
gedit /linux-3.5/arch/arm/kernel/sys_arm.c
asmlinkage long sys_add(int a, int b){
return (a + b);
}
4)编译
[root@localhost linux-3.5]# make
4、将新的zImage拷贝到网络启动的SD卡刷机
5、 做一个动态库
cd /home/material/code/code_driver/02syscall/01user_so
[root@localhost 01user_so]# ls
add.c add.h test.c
编译
[root@localhost 01user_so]# arm-linux-gcc -shared -fpic add.c -o libadd.so
[root@localhost 01user_so]# ls
add.c add.h libadd.so test.c
6、生成测试程序
[root@localhost 01user_so]# arm-linux-gcc test.c -o test -L./ -ladd
[root@localhost 01user_so]# ls
add.c add.h libadd.so test test.c
7、 将libadd.so 和 test 下载到开发板
[root@localhost 01user_so]# cp -f libadd.so /uplookingroot/.
[root@localhost 01user_so]# cp -f test /uplookingroot/.
8、进入板子
挂载共享目录
[roorplooking /mount -t nfs -o nolock,rw 192.168.1.10:/uplookingroot /mnt
将libadd.so 拷贝到/lib
[roorplooking /cd /mnt
[roorplooking /mnt cp libadd.so /lib/.
测试
[roorplooking /mnt./test
c =
4
四、写应用程序测试系统
由于Supperboot不能支持我们自己修改的内核,重新编译内核
tar -xvf linux-3.5-20150121.tgz -C /root
cd linux-3.5
cp tiny4412_linux_defconfig .config
make -j4
构建刷机sd卡: //由于前面已经给sd分过区,在此省略分区操作
images拷贝到sd卡 把sd卡插入PC
cp /arch/arm/boot/zImage Linux/zImage
vim FriendlyARM.ini
OS=Linux
把sd卡插入开发板进行刷机
将开发板与PC进行连接
minicom
开发板开机
配置PC ip ifconfig etho 192.168.1.10
ping 192.168.1.20 测试PC与板子的通讯
挂载共享目录
[roorplooking /mount -t nfs -o nolock,rw 192.168.1.10:/uplookingroot /mnt
将新的zImage拷贝到网络启动的SD卡刷机
编译
[root@localhost 01user_so]# arm-linux-gcc -shared -fpic add.c -o libadd.so
[root@localhost 01user_so]# ls
add.c add.h libadd.so test.c
生成测试程序
[root@localhost 01user_so]# arm-linux-gcc test.c -o test -L./ -ladd
[root@localhost 01user_so]# ls
add.c add.h libadd.so test test.c
将libadd.so 和 test 下载到开发板
[root@localhost 01user_so]# cp -f libadd.so /uplookingroot/.
[root@localhost 01user_so]# cp -f test /uplookingroot/.
将libadd.so 拷贝到/lib
[roorplooking /cd /mnt
[roorplooking /mnt cp libadd.so /lib/.
测试
[roorplooking /mnt./test
c =
4
效果


ARM Cortex-A9 (tiny 4412)的更多相关文章
- swddude -- A SWD programmer for ARM Cortex microcontrollers.
Introducing swddude I love the ARM Cortex-M series of microcontrollers. The sheer computational po ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...
- 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据
灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...
- 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置
灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...
- 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯
灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...
- ARM Cortex M3系列GPIO口介绍(工作方式探讨)
一.Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图 从图中可以看出 ...
- ARM Cortex M3(V7-M架构)硬件启动程序 二
解析 STM32 的启动过程 解析STM32的启动过程 当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main ...
- ARM Cortex M3(V7-M架构)硬件启动程序 一
Cortex-m3启动代码分析笔记 启动代码文件名是STM32F10X.S,它的作用先总结下,然后再分析. 启动代码作用一般是: 1)堆和栈的初始化: 2)中断向量表定义: 3)地址重映射及中断向量表 ...
随机推荐
- LA3510 Pixel Shuffle
题意 PDF 分析 思路挺简单的,题目中的每个命令(包括命令的逆)相当于一个置换. 用\(O(n^2k)\)的时间复杂度从右往左求出这些置换的乘积A,然后求m使Am = I(I为全等置换) 还是先把A ...
- 鸟哥的linux私房菜第4版--自学笔记
-----------------------------------第一章 intel芯片架构 PS:升级电脑还得看看主板是不是适合CPU,主板适合CPU的类型是有限的PS: 现在已经没有北桥了,已 ...
- access-control-allow-origin
when use vastinspector to check our vast response ,it tiped : "no 'access-control-allow-origi ...
- drone 1.0 新的定时任务界面&&构建任务支持重启
drone 1.0 的定时任务是一个不错的功能,早期的版本是必须使用cron 表达式的 最近发布的版本支持通过配置就可以了,很方便,只是目前比较简单的,支持小时. 天.周.月.年的模式 环境准备 do ...
- System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的 区别和用法
System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,但是另外两个没有这个情况,System.Timers.Timer.System.Th ...
- css重难点笔记
只有定位(static除外)的盒子才有z-index,即对静态定位,文档流和浮动设置z-index,都是无效的. 一个盒子如果未给宽度,那么被浮动,绝对定位,display:inline-block之 ...
- MongoDB索引的种类与使用
一:索引的种类 1:_id索引:是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段2:单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索 ...
- Hanlp分词之CRF中文词法分析详解
这是另一套基于CRF的词法分析系统,类似感知机词法分析器,提供了完善的训练与分析接口. CRF的效果比感知机稍好一些,然而训练速度较慢,也不支持在线学习. 默认模型训练自OpenCorpus/pku9 ...
- STM32的优先级的理解及其使用
1 组只代表主优先级和副优先级数量的配比,组之间没有优先级的概念. 2 不同的主优先级中断之间,高优先级中断可以打断正在执行的低优先级中断,即可以形成中断嵌套. 3 主优先级相同的中断,高副优先级中断 ...
- ML平台_微博深度学习平台架构和实践
( 转载至: http://www.36dsj.com/archives/98977) 随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...