arch linux arm下载_arm开发板运行hello word的详细过程

arm开发板运行helloword

1.uboot的编译

​ 这里已经安装好了交叉编译工具链,如果自己的电脑下没有,请自行百度安装。将下载好uboot到linux下,进行解压-->打补丁-->编译-->烧写,执行以下命令完成上述四个步骤(不同的开发板在下载u-boot之后,进行打补丁操作),编译完成,u-boot.bin文件烧写到开发板即可。

tar -jvxf u-boot-1.1.6.tar.bz2
cd ./u-boot-1.1.6
patch -p1 < ../ u-boot-1.1.6_jz2440.patch
make   100ask24x0_config 
make CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- smdk2440_config
make -j4

281d6df9b2fbe322c0884c364353d7a7.png

2.linux内核的编译

​ 同样,将下载好的内核包进行以下操作:解压-->打补丁-->配置内核-->编译,执行以下命令完成对应的操作。(执行make menuconfig时会出现配置内核的界面,根据自己的需要进行配置)

tar -jvxf linux-2.6.22.6.tar.bz2
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_jz2440.patch
make s3c2410_defconfig
cp config_ok .config
make menuconfig CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4
make uImage CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4

编译过程中遇到了错误是按照如下解决,如果遇到其他错误请自行解决

d7ded6078f1556a4e116b962522d8d6b.png

​ 最后编译完成。

4f08f39028c0e6744a7fbf2dde228f42.png

​ 生成的uImage在下图中路径。烧写到开发板中即可。

b40adf07de92b1790f7563c22ea323a3.png

3.文件系统的制作

​ 一般开发板的厂商会提供文件系统,你可以自行烧写对应的文件系统,这里自己制作一个最小文件系统。制作之前应该了解最小文件系统由什么组成。最小根文件系统封需要5个要求:

1 | busybox--ls、cp等命令的集合

2 | 两个设备:/dev/console /dev/null

3 | /etc/inittab配置文件

4 | C库

5 | 配置指定的运行程序

3.1 制作busybox

​ busybox其实就是linux下ls、cd等一些基本命令的集合,所以要编译它进行操作。对应操作:解压-->配置-->编译-->安装,分别对应以下命令。

tar -jvxf busybox-1.7.0_patch.tar.bz2 
tar -vxf busybox-1.7.0.tar.bz2
cd busybox-1.7.0
make menuconfig CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4
make CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4
make CONFIG_PREFIX=/home/book/nfsroot/busybox install

出现错误

/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root/usr/include/linux/netfilter.h:56: error: field 'in6' has incomplete type ipsvd/tcpudp.c: In function 'tcpudpsvd_main': ipsvd/tcpudp.c:314: warning: ignoring return value of 'write', declared with attribute warn_unused_result scripts/Makefile.build:192: recipe for target 'ipsvd/tcpudp.o' failed make[1]: [ipsvd/tcpudp.o] Error 1 Makefile:701: recipe for target 'ipsvd' failed make: [ipsvd] Error 2 make: Waiting for unfinished jobs.... make: wait: No child processes. Stop.

解决:下载的交叉编译库中有个头文件中的 in 和 in6 类型不对,解决的方法(亲自测试): 在 …/arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h 的开头 添加缺少的头文件:

include

iptunnel.c:(.text.print_tunnel+0x290): more undefined references to `__cpu_to_be16' follow collect2: ld returned 1 exit status Makefile:678: recipe for target 'busybox_unstripped' failed make: *** [busybox_unstripped] Error 1

解决:在该目录下的 vim networking/libiproute/iptunnel.c 文件中加入#include

最后成功编译的busybox

72c748e2639c2bf4aec92c54b9899558.png

3.2 创建设备文件

​ 这两个设备文件可以理解为内核启动的第一个程序console:其实就是命令窗口

mkdir dev
cd dev/
sudo mknod console c 5 1
sudo mknod null c 1 3

3.3 创建ect/inittab配置文件

mkdir etc
cd etc/
vi inittab
console::askfirst:-/bin/sh

3.4 配置C库

​ 将编译器的C库拷贝到根文件系统目录下的库文件/lib中,是交叉编译的C库

mkdir lib
cp /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/so* /work/nfs_root/lib/ -d

2c7db1889306c068bd5b265f8200574d.png

9ee157bd1eb239f7885f5fe76e294945.png

3.4制作文件系统

​ 此次将文件系统制作为yaffs文件系统,下载制作工具,拷贝到linux,然后给制作工具附加执行权限,制作完毕之后烧写到开发板中即可。

sudo cp ./mkyaffs2image  /usr/local/bin
chmod +x /usr/local/bin/mkyaffs2image
mkyaffs2image nfs_root nfs_root.yaffs2

​ 此时,开发板系统已经能正常运行。

ce2df001089ad4c726fa464f7eae7d78.png

3.6 设置开发板的ip

​ 此时系统已经跑起来了,为了方便接下来的操作,将自己虚拟机的文件挂载到开发板中,先配置ip,根据自己的电脑和虚拟机中,自行设置,但是一定要处于同一网络,然后让三者相互ping通即可。

ifconfig eth0 192.168.43.20

3.7 挂载网络文件系统

​ 下面两个命令都可以挂载虚拟机下的文件夹,但是当进行大量传输文件到开发板时,第一种挂载会出现错误,所以建议使用第二种挂载命令。建议使用第二种挂载命令

mount -t nfs -o nolock 192.168.43.175:/work/nfs_root /mnt
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.43.61:/work/nfs_root /mnt

4.运行helloword程序

​ 首先在自己的linux下创建main.c,然后进行交叉编译生成开发板的可执行文件,放入开发板中执行。

1 

​ 创建完之后,进行编译,执行结果

arm-linux-gcc -static -o a.out main.c

f410d21ee557d62d729f1a3a9af39d64.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于通信matlab 仿真,关于MATLAB在通信仿真系统中的运用

关于 MATLAB在通信仿真系统中的运用 卢 钊 贵 广 东南方 电信规 划 咨询 设 计院 有 限公 司 广 东 揭 阳 522031 【摘 要 】本文采用MATLAB软件 &#xff0c;采集一些图像对其进行图像增 强处理以及MATLAB提供的可视化 SiinuIi nk建立 了扩频通信 系统仿真模 型 &#xff0c;并…

化学专业尽早转行_尽早查看针对Java 11的功能

化学专业尽早转行随着JDK 10即将进入其候选发布阶段 &#xff0c;通过JDK 11观察一下之后将会发生什么是很有趣的。 在撰写本文时&#xff0c;四个JEP &#xff08; JDK增强建议 &#xff09;已正式成为JDK 11的目标&#xff08;可能会出现&#xff09;。 这篇文章总结了一些当…

系统服务管理与控制程序(Init System/初始化系统)-- Systemd 的 Unit 配置文件详解

文章目录一、Service 的配置文件&#xff08;一&#xff09;[Unit] 区块&#xff08;二&#xff09;[Service] 区块1.启动命令2.启动类型3.重启行为&#xff08;三&#xff09;[Install] 区块二、Target 的配置文件三、重载配置文件和重启服务一、Service 的配置文件 一个服务…

matlab乘法器数量级统一,基于matlab的数字滤波器的设计

1 数字滤波器的概述数字滤波器可以用差分方程、单位取样相应以及系统函数等表示&#xff0c;对于研究系统的实现方法&#xff0c;及它的运算结构来说&#xff0c;用狂徒便是最为直接。一个给定的输入输出关系&#xff0c;可以用多种不同的数字网络来实现。在不考虑量化影响是&a…

spring 计划任务_与Spring的计划任务一起按时运行

spring 计划任务您是否需要每天像闹钟一样在同一时间运行某个流程&#xff1f; 然后&#xff0c;Spring的预定任务适合您。 允许您使用Scheduled注释方法&#xff0c;以使其在指定的时间或内部间隔运行。 在本文中&#xff0c;我们将研究建立一个可以使用计划任务的项目&#x…

小程序 input自动换行_直播 | 最实用的微信小程序自动化测试技术独家揭秘

随着微信小程序的功能和生态日益完善&#xff0c;很多企业级小程序项目的页面越来越多&#xff0c;业务逻辑也越来越复杂。如何做好微信小程序的自动化测试成为测试同学面临的一大难题。如何合理构建多端架构和自动化测试体系&#xff1f;如何深入理解微信小程序特性和技术原理…

sit matlab,LabView SIT工具包的使用和安装说明

之前一直在用Simulink做仿真模型&#xff0c;现在要做测试需要用NI的设备和LabView软件&#xff0c;通过一段时间的学习&#xff0c;在SIT的使用上有了点小认识拿来跟大家分享一下。需要注意的是&#xff0c;必须是先安装MatLab Simulink 然后安装SIT工具包&#xff0c;如果先安…

php cdi_CDI中的事务异常处理

php cdi在Java EE中&#xff0c;在执行事务性业务方法期间引发的异常导致事务回滚。 但是&#xff0c;只有系统异常&#xff08;即运行时异常&#xff09;才是这种情况&#xff0c;该方法异常未在方法签名中声明。 对于应用程序异常&#xff08;即检查的异常&#xff09;或任何…

opencv 把3通道图像转成单通道_小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算

引入问题引入&#xff0c;考虑以下几个问题&#xff1a;Q1. 一个3通道像素p的BGR分量&#xff08;8bit表示&#xff09;值均相同&#xff0c;那么这个像素是什么颜色的&#xff1f;Q2. 该像素p加上自己&#xff0c;即&#xff0c;像素p的各个通道值翻倍&#xff0c;那么这个像素…

Linux(CentOS 7.x) 下如何设置 nginx 开机启动?

CentOS 7 以上是用 Systemd 进行系统初始化的&#xff0c;Systemd 是 Linux 系统中最新的初始化系统&#xff0c;Systemd 服务文件以 .service 结尾。 使用命令 yum 安装 nginx 如果用 yum install 命令安装 nginx&#xff0c;yum 命令会自动在目录 /usr/lib/systemd/system …

mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误

springmvc 请求无法到达controller&#xff0c;出现404错误web.xmltestmvcindex.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jspspringmvcorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springmvc-servlet.xml1springmvc/org.…

jdk 1.8 不可变常量_在JDK 10中不可变与不可修改

jdk 1.8 不可变常量大约两个月前&#xff0c; 斯图尔特马克斯 &#xff08; Stuart Marks&#xff09;写道&#xff1a;“ 不变性就像葡萄酒 。” 然后&#xff0c;他提醒读者注意叔本华的熵定律 &#xff1a;“如果将一勺酒倒入装满污水的桶中&#xff0c;就会产生污水。 如果…

diff算法_传统Diff算法为什么时间复杂度要O(n ^3)

原文链接&#xff1a;https://juejin.im/post/6892671384976097287很多文章提到的都是新旧DOM树需要两两对比&#xff0c;但是没有说清楚为什么。思考大家想一下&#xff0c;如果让你来设计将一棵树转换为另一棵树&#xff0c;你会怎么设计&#xff1f;可能是直接暴力的根据ind…

CentOS 7 Linux 的初始化系统(系统服务管理和控制程序/Init System) -- systemd 详解

文章目录一、systemd 的由来&#xff08;一&#xff09;常用的 init 系统&#xff08;二&#xff09;init 程序的缺点&#xff08;三&#xff09;systemd 简介&#xff08;四&#xff09;systemd 架构图二、服务管理三、unit 配置文件&#xff08;一&#xff09;概述&#xff0…

python 指针指向的内容,python-文件的读取及指针位置

文件的读取及指针位置打开文件的三步&#xff1a;打开->操作->关闭文件的读取&#xff1a;f open(/tmp/passwd)打开f.close()操作完&#xff0c;关闭文件判断文件对象拥有的权限print(f.readable())是否拥有可读权限True or Falshprint(f.writable())是否拥有可写权限文…

jax-rs jax-ws_对状态代码使用JAX-RS异常

jax-rs jax-ws从JAX-RS资源发送特定HTTP&#xff08;错误&#xff09;状态代码的一种方法是使用javax.ws.rs.core.Response类及其类似Builder Pattern的API。 如果要根据响应主体指定返回类型&#xff0c;则仍然可以这样做&#xff0c;并通过抛出WebApplicationException针对错…

Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理

文章目录一、Linux 的启动过程二、初始化程序&#xff08;一&#xff09;System V init&#xff08;二&#xff09;Upstart init&#xff08;三&#xff09;systemd&#xff08;四&#xff09;Launchd&#xff08;五&#xff09;Epoch&#xff08;六&#xff09;Mudar一、Linux…

matplotlib 柱状图_Matplotlib数据可视化:柱状图与直方图

↑↑点击上方蓝字&#xff0c;回复资料&#xff0c;嘿嘿&#xff0c;10个G的惊喜柱状图和直方图是两种非常类似的统计图&#xff0c;区别在于&#xff1a;直方图展示数据的分布&#xff0c;柱状图比较数据的大小。直方图X轴为定量数据&#xff0c;柱状图X轴为分类数据。因此&am…

php怎样完成批量审核,CMS_DedeCMS 批量取消审核文档的实现方法,今天修改了几个地方的代码 实 - phpStudy...

今天修改了几个地方的代码 实现了在原来dede文章批量管理的地方 添加一个 “取消审核” 如下图&#xff1a;实现方法&#xff1a;修改管理目录(默认为dede)下的文件&#xff1a;archives_do.php 插入以下代码(位置随意 可以放审核文档下面 方便记忆)&#xff1a;复制代码代码如…

groovy.run 脚本_Picocli 2.0:类固醇上的Groovy脚本

groovy.run 脚本Picocli 2.0增加了对其他JVM语言&#xff08;尤其是Groovy&#xff09;的支持。 当Groovy语言具有CliBuilder类的内置CLI支持时&#xff0c;为什么还要使用picocli&#xff1f; 您可能喜欢picocli的使用帮助&#xff0c;默认情况下会显示ANSI 颜色和样式 。 您…