Linux与S5P100开发板的交互编译

本文详细记录了在Ubuntu环境下,为S5P100开发板配置Linux系统,包括连接前的准备工作如安装nfs、tftp、arm-linux-gcc等,通过串口和网络协议进行系统加载与测试的过程。同时,文章涉及了功能测试,如播放音乐和交叉编译C程序。
摘要由CSDN通过智能技术生成

Linux心得

这个系例文章是记录自己,在学习linux过程中,遇到并解决的问题。以及一些必备知识点的理解,希望能对看到的你有所帮助。
如果你觉得S学者写的不错的话,欢迎点赞评论。
在这里插入图片描述



前言

本文使用linux为S5P100加载(Kernel)内核,挂载根文件系统。通过ubuntu与开发板进行交叉编译。

具体过程,


大致流程:
板子于电脑串口连接后,通电 U-boot加载引导程序。 并且利用tftp在Ubuntu下载zlmage(内核)到板子上 ,在通过nfs共享访问共享目录,作为板子的根文件系统。

一、连接前准备

  • 具体文档点击链接下载,内部含有保姆级步骤

S5P100开发板与ubuntu交叉编译资源

根据上述的流程,我们需要提前在ubuntu以及电脑上提前配置好环境。
ubuntu: nfs、tftp、arm-linux-gcc、VMware Tools 。
Windows:串口驱动。

1.ubuntu安装nfs

文件系统共享服务:共享一个文件目录,作为板子的根文件系统。

2.ubuntu安装tftp

文件传输协议:板子通过uboot向ubuntu请求下载内核映像。

3.ubuntu安装arm-linux-gcc

GCC编译器交叉编译工具链:将源代码编译为ARM体系结构上的可执行文件。

4.ubuntu安装VMware Tools

VMTools 可以提升虚拟机的玩机体验,其中对于文件传输的提升。在本次实验中,我们在Windows下拖拽实验要用的压缩包到共享文件夹下,Ubuntu中可以直接进行解压和复制。

5.ubuntu安装smb(非必须)

共享文件,类似于VMware Tools的文件共享。
实现Window 于ubuntu的共享。

6.串口驱动下载

压缩包与上几个文件放在一起。 (free)

二、总配置流程

1.具体步骤:

  1. 在 ubuntu 中将 zImage 复制到 /var/lib/tftpboot 目录下。

此文件会在开发板启动时动态自动通过网络以 tftp 网络协议下载到开发板的内存中。

sudo cp /mnt/hgfs/shared/zImage /var/lib/tftpboot
  1. 在 ubuntu 配置根文件系统。

解压filesystem.tar.gz 到 /opt 下,成为 /opt/filesystem。

sudo tar xzf /mnt/hgfs/shared/filesystem.tar.gz -C /opt

启动 nfs:

 sudo service nfs-server start   
  1. 接线说明、串口配置
    aRS232 串口线,一端接开发板的 COM1 接口,另一端 接电脑。
    电脑无RS232接口,用一根USB-RS232转接
    b电源线选用12V
    c板子接网线
    串口配置如下图:

在这里插入图片描述
4. 配置开发板 IP,及其他参数
查看网卡信息:ifconfig
在这里插入图片描述
u-boot 的 print 命令可以打印参数信息,如下:

SMDKC100 # print
bootdelay=5         # 启动延时秒数,在计数到 0 前回车可进入 u-boot 命令行
baudrate=115200     # 串口波特率
netmask=255.255.255.0      # 子网掩码
ethaddr=11:22:33:44:55:46  # MAC 地址
serverip=192.168.31.175    # 服务器 IP,即 ubuntu 桥接网卡的 IP
ipaddr=192.168.31.176      # 开发板的 IP,必须与服务器 IP 在同一网段
gatewayip=192.168.31.1     # 网关 IP
bootargs=root=nfs nfsroot=192.168.31.175:/opt/filesystem,v3 ip=192.168.31.176 init=/linuxrc console=ttySAC0,115200  # 启动参数
set=gatewayip 192.168.31.1 # 网关 IP
bootcmd=tftp 20800000 zImage;bootm 20800000   # 启动命令
stdin=serial        # 标准输入
stdout=serial       # 标准输出
stderr=serial       # 标准错误

Environment size: 372/16380 bytes

需要在 u-boot 命令行下配置的有:

SMDKC100 # set serverip 192.168.40.77   #改成自己的ip哦
SMDKC100 # set ipaddr 192.168.40.177    # 开发板 IP
SMDKC100 # set gatewayip 192.168.40.1   #网关
SMDKC100 # set bootargs root=nfs nfsroot=192.168.40.77:/opt/filesystem,v3 ip=192.168.40.177 init=/linuxrc console=ttySAC0,115200
SMDKC100 # set bootcmd tftp 20800000 zImage\;bootm 20800000     # ; 使用转义 \;
SMDKC100 # set bootcmd 'tftp 20800000 zImage;bootm 20800000'    # 因为包含 ; 号,所以使用 '' 括住参数
SMDKC100 # save    # 保存以上参数配置

测试开发板与 ubuntu 是否网络相通

SMDKC100 # ping 192.168.40.77 #ping 自己的ip哦

ping过后可能停不下来。正常,重启一下吧。下一次直接输入下面命令
启动系统

SMDKC100 # boot   

三、功能测试

1.播放音乐

  1. ubuntu 复制 madplayer 目录到 /opt/filesystem 下:
sudo cp -R /mnt/hgfs/shared/madplayer /opt/filesystem   
  1. 开发板进入 madplayer 目录,播放歌曲,插耳机听:
  cd madplayer
   ./madplayzhou.mp3

如下所示:《一路向北》
在这里插入图片描述

2…交叉编译

1.在Ubuntu下正常编写一个c程序

vi test.c
//写个程序
//用arm-linux-gcc进行编译
arm-linux-gcc test.c

在这里插入图片描述

2.开发板上运行这个程序

./a.out

如下所示:本来想送你们一个大爱心的,板子不支持这个符号

在这里插入图片描述


总结

在linux学习上又前进了一小步,对于一个一个终端的形成有了更好的理解。bootloader 引导程序,kernel 内核,rootfs 根文件系统。缺一不可,为了提高用户体验的图形界面、应用程序。
点个关注不迷路,S学长会耍酷。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S安东尼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值