1952|0

29

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

Lichee RV 86 PANEL评测(3)——WSL单系统下搭建交叉编译链 [复制链接]

 
# Lichee RV 86 PANEL评测(3)——WSL单系统下搭建交叉编译链

为什么要下载交叉编译工具?

PC机上的编译工具链为gcc、 ld、 objcopy、 objdump等,它们编译出来的程序在x86平台上运行。要编译出能在ARM平台上运行的程序,必须使用交叉编译工具arm-linux-gcc、arm-linux-ld等。

嵌入式产品开发流程中,通常有两个关键的步骤,编译源码与烧写固件。源码编译需要先准备 好编译环境,而固件烧写则需要厂家提供专用烧写工具。

一个典型的嵌入式开发环境包括本地开发主机和目标硬件板:

  • 本地开发主机作为编译服务器,需要提供linux操作环境,建立交叉编译环境,为软件开发提供 代码更新下载,代码交叉编译服务。
  • 本地开发主机通过串口或USB与目标硬件板连接,可将编译后的镜像文件烧写到目标硬件板, 并调试系统或应用程序。

如何使用WSL来配置编译工具?

不知道为什么目前还没修好。

在Tina SDK中带有完整的编译工具链,在如下路径:

  1. tina/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702

但是可以先单独下载工具链嘛:

反正我Tina也没下载下来,不妨先用Debian来试一试。

单独下载编译工具链地址:

riscv64-glibc-gcc-thead_20200702下载

下载后放到Linux环境中解压:

  1. tar -zxvf riscv64-glibc-gcc-thead_20200702.tar.gz

但是问题来了,我该如何下载到我的wsl下呢??

很简单!很离谱!

你直接就可以在linux下访问windos的文件夹并且操作!

是不是很离谱!

在WSL下你可以看到windos下的每个盘符:

  1. jszszzy@LAPTOP-74GAR8S9:~$ cd /mnt/
  2. jszszzy@LAPTOP-74GAR8S9:/mnt$ ls
  3. c d e f

直接使用cp将压缩包拷贝过去。

  1. jszszzy@LAPTOP-74GAR8S9:~/Lichee_RV/tools$ cp /mnt/d/Embedded/LicheeRV/tools/riscv64-linux-x86_64-20210329.tar.gz /home/jszszzy/Lichee_RV/tools

然后执行命令解压:

  1. jszszzy@LAPTOP-74GAR8S9:~/Lichee_RV/tools$ tar -zxvf riscv64-linux-x86_64-20210329.tar.gz

然后就是漫长的解压过程,等待完成以后工具链就配置完成了。

如何使用WSL来编写代码?

首先我们先来写一个代码看看:

你当然可以在Windos下编写,编写完成以后送去WSL编译。

上文讲述了WSL可以直接访问Linux,那么Windos如何访WSL下的文件呢?

只需要一行命令即可:

  1. explorer.exe .

直接就可以在windos的文件浏览器里操作WSL的文件。

让我们把编写好的文件复制过去。(这里只是演示一下,实际上我是在WSL下直接vim 复制过去的)

如何使用WSL来编译代码?

交叉编译是指在我们的PC机上编译可以在开发板上运行的可执行程序文件,因为是在上位机上编译,然后在不同体系结构的开发板上跑,所以叫交叉编译。

直接使用编译器生成编译文件即可:

  1. jszszzy@LAPTOP-74GAR8S9:~/Lichee_RV/tools$ bin/riscv64-unknown-linux-gnu-gcc -o hello_word helloworld.c

这段命令的意思是使用riscv64-unknown-linux-gnu-gcc编译器 生成hello_word可执行文件。

生成完以后我就要考虑一个问题?如何把代码下载过去呢?

目前来看86 panel并不支持全志官方的ADB下载方式。

不过没关系,我们还有附赠的USB转接器

直接插上优盘:

需要注意的是你U盘的文件系统需要Debian支持,这里我直接把他格式化成FAT32,100%支持!

使用命令打开WSL编译下的目录:

  1. jszszzy@LAPTOP-74GAR8S9:~/Lichee_RV/tools$ explorer.exe .

直接拖拽到U盘即可。

将U盘插入到86PANEL,需要挂载一下:

  1. sipeed@sipeed:~$ sudo mount /dev/sda1 /mnt/usb
  2. [ 357.120387] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
  3. [ 357.148457] EXT4-fs (sda1): mounted filesystem without journal. Opts: (null)
  4. sipeed@sipeed:~$ [ 366.940302] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highsped device disconnect
  5. [ 366.949151] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connec
  6. [ 366.960975] usb 1-1: USB disconnect, device number 2
  7. [ 366.991217] blk_update_request: I/O error, dev sda, sector 2056 op 0x1:(WRITE) flas 0x3000 phys_seg 4 prio class 0
  8. [ 367.002955] Buffer I/O error on dev sda1, logical block 1, lost async page write
  9. [ 367.011231] Buffer I/O error on dev sda1, logical block 2, lost async page write
  10. [ 367.019594] Buffer I/O error on dev sda1, logical block 3, lost async page write
  11. [ 367.027903] Buffer I/O error on dev sda1, logical block 4, lost async page write
  12. [ 367.466682] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconect
  13. [ 367.475533] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connec
  14. [ 367.486707] usb 1-1: new high-speed USB device number 3 using sunxi-ehci
  15. [ 367.872542] usb 1-1: device descriptor read/64, error -71
  16. [ 368.204200] usb-storage 1-1:1.0: USB Mass Storage device detected
  17. [ 368.213681] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconect
  18. [ 368.228555] scsi host1: usb-storage 1-1:1.0
  19. [ 368.245525] usb 1-1: USB disconnect, device number 3
  20. [ 473.119666] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connec
  21. [ 473.392553] usb 1-1: new high-speed USB device number 4 using sunxi-ehci
  22. [ 473.604212] usb-storage 1-1:1.0: USB Mass Storage device detected
  23. [ 473.623067] scsi host1: usb-storage 1-1:1.0
  24. [ 474.643926] scsi 1:0:0:0: Direct-Access Generic STORAGE DEVICE 0272 PQ: 0 ASI: 0
  25. [ 474.754654] sd 1:0:0:0: [sdb] 122138624 512-byte logical blocks: (62.5 GB/58.2 GiB
  26. [ 474.764645] sd 1:0:0:0: [sdb] Write Protect is off
  27. [ 474.769996] sd 1:0:0:0: [sdb] Mode Sense: 0b 00 00 08
  28. [ 474.783531] sd 1:0:0:0: [sdb] No Caching mode page found
  29. [ 474.789465] sd 1:0:0:0: [sdb] Assuming drive cache: write through
  30. [ 474.828796] sdb: sdb1
  31. [ 474.847301] sd 1:0:0:0: [sdb] Attached SCSI removable disk

插入后会提示你盘符,这里需要手动挂载一下:

  1. sipeed@sipeed:~$ sudo mount /dev/sdb1 /mnt/usb

转到u盘目录可以看到我们编译的文件:

  1. sipeed@sipeed:~$ cd /mnt/usb
  2. sipeed@sipeed:/mnt/usb$ ls
  3. hello_word 'System Volume Information'

赋予执行权限:

  1. sipeed@sipeed:/mnt/usb$ chmod +x hello_word

执行一下:

  1. sipeed@sipeed:/mnt/usb$ ./hello_word
  2. -bash: ./hello_word: No such file or directory
  3. sipeed@sipeed:/mnt/usb$ ./hello_word
  4. -bash: ./hello_word: No such file or directory

发现执行不了!!!??

  1. sipeed@sipeed:/mnt/usb$ ls -a
  2. . .. hello_word 'System Volume Information'

发现确实存在啊。

使用ldd查看一下连接情况:

  1. sipeed@sipeed:~$ ldd hello_word
  2. linux-vdso.so.1 (0x0000003fd543c000)
  3. libc.so.6 => /lib/riscv64-linux-gnu/libc.so.6 (0x0000003fd531e000)
  4. /lib/ld-linux-riscv64xthead-lp64d.so.1 => /lib/ld-linux-riscv64-lp64d.so.1 (00000003fd543e000)

感觉连接没有问题,我现在还没有找到问题在哪里,没办法只能静态编译再来一次了。

  1. jszszzy@LAPTOP-74GAR8S9:~/Lichee_RV/tools$ bin/riscv64-unknown-linux-gnu-gcc -o hello_static helloworld.c -static

最后成功运行:

  1. sipeed@sipeed:/mnt/usb$ ./hello_static
  2. Hello NeZha

目前这个问题还没有解决希望大佬指导一下。

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名赢【小米双肩包、contigo水杯】 | TI MSPM0 系列 MCU 再添新成员
了解TI 前沿新品——高性能与高性价比的优秀组合 MSPM0G351x / MSPM0L111x,4月24日(周四)上午10:00直播~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 7

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表