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)地址重映射及中断向量表 ... 
随机推荐
- python str使用笔记(更新)
			判断字符串是否以某个串为结尾: str.endswith(strtmp) 返回True/False >>> strs='aba' >>> strs.endswith ... 
- IDEA在jsp页面写out.print()代码报错
			如题,小编以前用myeclipse,eclipse的时候,在jsp里写java代码都是可以的,现在我换成了IDEA,却莫名报错 而且没有代码提示,比如说下图这样的,,虽然运行还是能运行...但对强迫症 ... 
- jsp&el&jstl  mvc和三层架构
			jsp:java在html中插入java 一.JSP技术 1.jsp脚本和注释 jsp脚本:(翻译成servlet,源码位置apache-tomcat-7.0.52\work\Catalina\loc ... 
- mac 打印机无法打印
			每次打印word的时候都无法正常打印,提示嘀嘀响声. 文件->页面设置-> 纸张A4 即可 
- Pycharm乱码解决
			现象:输出栏出现乱码 解决方案: 结果: 
- openstack--7--创建一台虚拟机
			回顾下前几节用到的东西 MySQL:为各个服务提供数据存储RabbitmQ:为各个服务之间提供通信提供交通枢纽Keystone:为各个服务之间通信提供认证和服务注册Glance:为虚拟机提供镜像管理N ... 
- 混合pyqt和qtcreator (2): Impl a image viewer (can show FIji ROI manager data)
			# -*- coding: utf-8 -*- """ Simple demonstration of TreeWidget, which is an extension ... 
- C# 装箱
			using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ... 
- 找出n个数中重复最多的10个数
			题目很清晰,直接上python代码 import pandas as pd import copy class BenchMark: def __init__(self): self.MIN = 10 ... 
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
			本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ... 
