当前位置:网站首页>登堂入室之soc开发环境及硬件开发准备
登堂入室之soc开发环境及硬件开发准备
2022-06-10 20:26:00 【guangod】
soc开发环境初步安装
自已之前接触到的linux开发板,应该是2014年购买的友善之臂的210,当时也是花了不少钱,但也一直没用上,也没什么项目可做。这次项目是基于一个soc的,所以就先从这个芯片开发环境入手了解下。
关于开发前的ubuntu使用,自己在2019时,已经使用过一段时间了,所以不陌生。但没有在上面开发过程序。自己的电脑也本来就是双系统的。所以就不像公司之前的项目一样,还要安装什么vm ware,还要在windown下安装linux虚拟机。
ubuntu开发环境安装
vsftp
ubuntu与windows做交互的,相互传文件(windowns端需要安装一个ftp工具,像file zilla,虚拟机安装的ubuntu本身就相当于一台电脑可以设置自己的网络ip,通过这个ip,windowns与ubuntu间就可以相互传文件了。)。做网络传输的,由于本身就是基于Linux ubuntu开发,所以这个暂时不用安也可以。
终端执行,sudo apt-get install vsftpd
同时要启动一下,执行:/etc/init.d/vsftpd restart,然后在windows端启动ftp工具,就可以看到ubuntu下的文件。
安装好这个工具后,同时按ctrl+alt,就可以方便的切出到windows
安装vim
脚本终端的编辑器,用来发命令的。这个之前玩ubuntu时,也应该安装上了。
终端执行:
sudo apt-get purge vim common
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vim
安装gcc及g++
终端执行gcc -v;默认ubuntu是自带的。
终端执行g++ -v;默认也是自带的。
如果没装的话,就执行sudo apt-get install g++//编译c++程序,
sudo apt-get install gcc//编译c程序
安装vscode
用来编写代码的,已经安装好了。有三种安装方式:
sudo dpkg -i 安装包名称.deb(这个是linux下安装包格式)
make make install,下载源码形式
apt-get ,网络安装方式,类似于手机。
安装git
用来git代码和管理。
执行sudo apt-get git
硬件开发准备
拿到手后,一般硬件上像全志或齐感的SOC芯片的linux操作系统已经安装好了,一般是OS装到了TF卡里面。先上电,等待系统启动后,再插USB调试端口还有以太网或手机卡。
装串口驱动
windows下就是装ch340或其他驱动,ubuntu下就是安装相应的驱动。
然后安装与板子交互的工具如moba或Xbell,通过串口连接到板子上串口,就可以交互了。
装以太网驱动
单片机一般通过jlink或stlink来下载程序,但linux很多时候都是通过以太网来下载或调试程序。
通过scp 文件 [email protected]板子IP,来将文件传到板子上的linux.
做系统固件(也可以跳过)
常规的就是准备TF卡读卡器,然后将tf卡变成启动盘。然后把linux烧录到 外置的flash里面就可以了。
补充
查看系统版本
执行:uname -a
安装软件时会遇到无法获得资源,是否有其他资源正在占用问题,如sudo apt-get install 提示不可用
这时表示要进行软件的一个升级。需要执行以下两步。
sudo apt-get update//更新资源
sudo apt-get upgrade//更新软件
板子端开发环境搭建
实现过程:先在pc端编写好程序,通过交叉编译工具,下载到板子端运行。
交叉编译器
通过它可以生成在arm端可运行的程序,然后拷贝到arm上的linux系统里,然后通过串口与板子交互,发送运行这个程序的命令,就可以看到板子上的linux在执行这个程序了。
选定交叉编译环境
pwd:显示相关目录的路径.,建立一个路径:sudo mkdir -p /home/guangod/qgsdk/buildroot
注:删除一个路径:sudo rmdir -p /home/guangod/qgsdk/buildroot
实例
Tina Linux是基于 openwrt-14.07 的版本的软件开发包。而openwrt是一个开源的嵌入式linux自动构建框架,由makefile和kconfig构成。
开发流程

检查系统需求
只支持ubuntu操作系统下的编译。
搭建编译环境
开发机器需要安装的各种软件包和工具
选择设备
在编译源码前,开发者需要先导出预定义环境变量,然后根据开发者根据的需求,选择对应的硬件板型.
系统定制
开发者可以根据使用的硬件板子、产品定义,定制 U-Boot、Kernel 及 Openwrt
编译与打包
完成设备选择、系统定制之后执行编译命令,包括整体或模块编
译以及编译清理等工作,进一步的,将生成的 boot/内核二进制文件、根文件
系统、按照一定格式打包成固件。
烧录并运行
继生成镜像文件后,将介绍如何烧录镜像并运行在硬件设备。
主机编译环境搭建(对应的就是ubuntu开发环境安装)
ubuntu作为编译服务器,通过usb或串口与开发板相连,可将编译后的镜像文件烧写到目标硬件板,并调试程序。
需要安装gcc, binutils, bzip2,flex, python, perl, make,ia32-libs, find, grep, diff, unzip, gawk, getopt, subversion, libzdev, libc headers.
或直接输入命令:
sudo apt-get install build-essential subversion git libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip ia32-libs-y
实际操作时,无论是一个个输安装命令还是其他一块安装的方式,都会出现无法定位软件包的问题???
原因为:复制时的斜杠为全角,输一遍半角,就可以直接安装上了.
出现无法定位软件包 ia32-libs-y的问题?
安装替代安装包:sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386
stack overflow上的答案:
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
烧录软件安装
路径为:/media/guangod/娱乐盘/QiganCenter/software/tools/aw_tools/.
使用./LiveSuit.run运行时提示没有dkms?
解决没有dkms问题?
dkms是一个内核模块管理工具.
刚开始选的几个发布源,确这是没有这个的,后来经过同事指点,在百度上搜dkms安装包,发现在ubuntu 官网上就有这个包,重新在"软件和更新"选择ubuntu官方的发布源,再执行sudo atp-get install dkms,好了,安装上了.
使用
先输入命令:cd ~/Bin/LiveSuit
然后输入:./LiveSuit.sh
执行过程中出现 “error while loading shared libraries: libpng12.so.0 : cannot open shared object file: No such file or directory”??
从Launchpad.net 这个安装包,直接安装上即可.
边栏推荐
- LeetCode 进阶之路 - 删除排序数组中的重复项
- Theoretical basis of distributed services
- Standard dual airbags, starting from 48900 for butcher Chang'an Lumin
- LeetCode 进阶之路 - 169.多数元素
- CET-6 - Business English - the last recitation before the test
- Introduction to database system -- Chapter 1 -- Introduction (important knowledge points)
- Brute force method /k integers out of 1~n integers
- Leetcode divides the array so that the maximum difference is k
- Factory and strategy mode implementation scheme of coupons
- Leetcode advanced path - the first unique character in a string
猜你喜欢

C language -- 4 first-time constant

Game compatibility test (general scheme)

你的公司会选择开发数据中台吗?

Cas de test app

Practical | how to use burp suite for password blasting!

学IT毕业后该去哪个城市?哪个岗位薪资高?哪些公司待遇好?

软件测试工程师是做什么的?

LeetCode:497. Random points in non overlapping rectangles -- medium

^29 event cycle model

Connexion MySQL errorcode 1129, State hy000, Host 'xxx' is Blocked because of many Connection Errors
随机推荐
Full Permutation V3 recursion of brute force method /1~n
A small case with 666 times performance improvement illustrates the importance of using indexes correctly in tidb
H265 Nalu type judgment and SPS data analysis
MySQL service startup failed
六级考试-商务英语-考前最后一背
Power set V4 recursion of brute force method /1~n
As a programmer, is it really that important for the underlying principles?
Realize OSD reverse color on YUV image according to background color
软件测试工程师是做什么的?
Pytorch deep learning -- neural network convolution layer conv2d
自媒体视频创作如何选择领域?
防抖和节流
Redis cluster configuration
编程式导航路由跳转到当前路由(参数不变), 多次执行会抛出NavigationDuplicated的警告错误?
C language -- 4 first-time constant
Leetcode advanced road - 125 Validate palindrome string
App test case
Is it safe to buy funds on mobile phones? Will the principal be swallowed?
分布式服务理论基础
C language -- 1 c language cognition