泰山派tspi-上手编译SDK连接WIFI

泰山派太精致了!!!,简直就是艺术品。计划会拿它做一个DIY的AI相机。

烧录完整镜像

参考镜像烧录

直接下载系统镜像到泰山派,无需编译SDK,但是要做开发的话,还是需要编译SDK,烧录各个部分的镜像。

什么是SDK

参考《【正点原子】ATK-DLRV1126 系统开发手册V1.5》

随着芯片性能的强大,越来越多的组件加入,例如tspi的rk3566上就有GPU和NPU,就需要处理各种依赖。

SDK包就是半导体原厂对芯片所有软件资源的打包,包括kernel、u-boot 和 rootfs等等其他库。

优点:使用SDK不用安装特殊的软件和库,自带交叉工具链、文件系统和第三方库,可以直接编译出系统镜像,开发环境搭建比较容易。

缺点:非常大,臃肿,不好上手。


SDK每个目录或者文件的作用:

  • app : 存放上层应用程序的目录。
  • buildroot :SDK 包使用的文件系统为 buildroot。
  • build.sh :编译用的脚本,使用方法后面会教。
  • device/rockchip :存放每个平台的一些编译和打包固件的脚步和预备文件。
  • docs :存放 RK 开发指导文件、平台支持列表、工具使用文档、Linux 开发指南等。
  • envsetup.sh :要修改文件系统时候要设置的环境脚本。
  • external : 存放相关的库,包括音频,视频等。
  • kernel :kernel 源码。
  • makefile :整个 SDK 包编译的 Makefile。
  • mkfirmware.sh :固件打包使用的脚本,默认在当前路径下的 rockdev 目录。
  • prebuilts : 存放交叉编译工具链。
  • rkbin: 存放固件和工具。
  • rkflash.sh : linux 下的系统烧录脚本。
  • tools :存放固件和工具的目录。
  • u-boot :U-boot 源码目录。
  • rockdev:存放编译输出固件的目录(整个 SDK 包编译完成后就会创建)。

一个完整的 SDK 包除了 kernel、u-boot、buildroot 之外,还需要提供上层的第三方库和 APP,第三方库和 APP 合起来叫做模块代码。
像之前的6ull和MP157开发,只有 3 座大山(kernel、u-boot 和 buildroot),没有模块代码,这样开发起来很麻烦。

有了模块代码后,我们做产品就很容易了。比如:在 rv1126 上做人脸识别可以参考 rockface 模块代码。
也可以做监控摄像头可以参考common_algorithm、ipc-daemon、ipcweb-backend 和 ipcweb-ng 等等。

模板代码基本在external和app目录下面。

编译SDK

参考:立创泰山派 飞书文档

1.基础配置操作

我使用的是韦东山的驱动实验班虚拟机,ubuntu 18.04。之前是编译开发过imx6ull。

开始按照文档开发之前需要先修改环境变量,一开始我似乎因为这个报错了。

vim ~/.bashrc

把最后面的三行注释掉,如:

# export ARCH=arm
# export CROSS_COMPILE=arm-buildroot-linux-gnueabihf
# export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

保存退出。执行命令:

source ~/.bashrc

接着,把资料里面的SDK压缩包拷贝到虚拟机

使用文档中的目录解压会报错:

tar -zxvf tspi_linux_sdk_xxxxxxxx.tar.gz
命令解释:
tar:解压命令 。
-z:使用 gzip 压缩算法进行解压或压缩。
-x:表示提取(解压)文件。
-v:显示详细的操作信息,即在解压过程中显示文件列表。
-f:指定要操作的文件名。
tspi_linux_sdk_xxxxxxxx.tar.gz:被解压对象。

因为权限问题

所以可以使用ubuntu的右击文件解压:

然后就可以按照官方文档进行操作了

2.开始编译

进入~/tspi_linux_sdk_20230916/Release

(1)编译环境配置

sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev

(2)SDK板级配置

./build.sh lunch

查看是否生效

./build.sh -h kernel
book@100ask:~/tspi_linux_sdk_20230916/Release$ ./build.sh -h kernel
###Current SDK Default [ kernel ] Build Command###
cd kernel
make ARCH=arm64 rockchip_linux_defconfig 
make ARCH=arm64 tspi-rk3566-user-v10-linux.img -j12

(3)全编译

注意,一定要先全部编译一遍,再编译部分(u-boot,kernel,recovery等)才不容易报错,例如想要编译内核,有些支持可能并不是都在内核中,如果没有全部编译过一遍,有些依赖会没有导致报错。

查看帮助

./build.sh -h

设置环境变量,选择buildrot操作系统,然后运行脚本:

export RK_ROOTFS_SYSTEM=buildroot
./build.sh all

第一次编译需要选择电源:例如

引脚PMUIO2VCCIO1VCCIO3VCCIO4VCCIO5VCCIO6VCCIO7
1.8 V(1800000)
3.3 V(3300000)

(之前表格搞反了,已经修正,感谢评论区Mikes_Will的提醒)
等待编译成功,我13400编译了近两个小时(可能因为开了很多应用和虚拟机只分配了四核有关)

接着执行固件打包:

./mkfirmware.sh

~/tspi_linux_sdk_20230916/Release/rockdev下会有打包好的固件:

book@100ask:~/tspi_linux_sdk_20230916/Release/rockdev$ ls
boot.img  MiniLoaderAll.bin  misc.img  oem.img  parameter.txt  recovery.img  rootfs.ext4  rootfs.img  uboot.img  userdata.img

3.烧录

拷贝到windows上,

参考立创文档,切到Loader模式:

打开瑞芯微开发工具:

完成

连接WIFI

这个部分简单

先插上天线哦,信号好很多

直接使用命令行:

nmcli device wifi connect "xxxxxx" password "yyyyyy"

删除网络:

root@localhost:~# nmcli con show
NAME           UUID                                  TYPE  DEVICE
HUAWEI-HiLink  dab2a9c3-c66f-406d-b0f8-0dcc76be4f8c  wifi
wlan0
root@localhost:~# nmcli con delete HUAWEI-HiLink

更多学习与项目笔记见我的个人网站
https://wanghaicheng.online/

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
这段代码存在一些语法错误,可能是因为复制时出现了一些问题。我对代码进行了一些修改,如下所示。你可以试着运行一下,看看是否可以正常工作。 ``` clear all; close all; ts = 0.001; pits = pi/180; tspi = (1:2001) * ts; for k = 1:1:2001 xd(k) = cos((k-1) * pits); yd(k) = sin((k-1) * pits); thd(k) = tspi(k-1) + pi/2; end for k = 1:1:2001 u1(k) = 0; u2(k) = 0; e1(k) = 0; e2(k) = 0; e3(k) = 0; end y0 = [1; 0; pi/2]; M = 20; for i = 0:1:M pause(0.001); for k = 1:1:2001 if k == 1 q = y0; end xp(k) = q(1); yp(k) = q(2); th(k) = q(3); qd = [xd(k); yd(k); thd(k)]; ce1(k) = qd(1) - q(1); ce2(k) = qd(2) - q(2); ce3(k) = qd(3) - q(3); u = [u1(k); u2(k)]; B = ts * [cos(q(3)), 0; sin(q(3)), 0; sin(q(3)), 0; 0, 0; 0, 0; 1, 0]; L1 = 10 * [cos(q(3)), sin(q(3)), 0; 0, 0, 1]; L2 = L1; cond = norm(eye(2) - L1 * B); U = u + L1 * [e1(k); e2(k); e3(k)] + L2 * [ce1(k); ce2(k); ce3(k)]; u1(k) = U(1); u2(k) = U(2); u = [u1(k); u2(k)]; q = q + B * u; e1(k) = cos(k * tspi) - q(1); e2(k) = sin(k * tspi) - q(2); e3(k) = ts * k * pi + pi/2 - q(3); end figure(1); hold on; plot(xd, yd, 'r', xp, yp, 'b'); xlabel('xd xp'); ylabel('yd,yp'); j = i + 1; times(j) = j - 1; e1i(j) = max(abs(ce1)); e2i(j) = max(abs(ce2)); e3i(j) = max(abs(ce3)); end figure(2); plot(xd, yd, 'r', xp, yp, 'b'); xlabel('xd xp'); ylabel('yd,yp'); figure(3); plot(times, e1i, '-r', times, e2i, 'o-b', times, e3i, 'o-k'); title('Change of maximum absolute value of e1,e2 and angle with times i'); xlabel('times'); ylabel('e1,e2 and angle'); ``` 这里还存在一些问题,例如,第30行的 `ktspi` 变量没有定义,需要根据具体的需求进行修改。同时,该代码中存在一些算法上的问题,需要进行进一步的检查和修改才能保证正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值