芯片开放社区
直播中

谭藤先

11年用户 51经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术 制造/封装 可编程逻辑 嵌入式技术 制造/封装 可编程逻辑 嵌入式技术 制造/封装
私信 关注
[技术讨论]

【平头哥Sipeed LicheeRV 86开发板试用体验】SDK下载及交叉编译


  • 前言

这里我是走了弯路,我当时没有想到还能单独下载交叉编译工具链,所以选择了下载SDK(sdk中包含交叉编译工具链)。
我是后来翻论坛,在“码农爱学习”大佬的帖子下( https://occ.t-head.cn/community/ ... 4006906640694579200)发现全志官方还有教程,刚好就有一篇讲helloworld程序的交叉编译,emmm当场高血压要发作了。全志官方教程链接: https://d1.docs.aw-ol.com/study/study_6helloword/
  • SDK下载

全志的sdk下载有专有的流程,需要登录全志客户服务平台操作,登录地址如下
https://open.allwinnertech.com/#/login?cas=true

登录后的界面如下:
登录界面.png
我们需要下载的SDK如红框所示,点击"SDK"即可进入下载界面,界面如下:
sdk下载界面.png
此时点击下载,会弹出免责申明,点击同意之后,会弹出sdk下载说明如下图所示:
xiazaishuoming.png
这里的下载说明只是简述,详细的流程见如下网址( http://open.allwinnertech.com/gu ... xia_zai/zi_yuan_ku/),其界面如下:
xiangxiliucheng.png
基本的配置说明以及可能遇到的问题都有一定说明。我的配置流程如下。
  • 生成公钥

    • ssh-keygen指令生成


公钥的来源可以在Linux下使用“ssh-keygen”指令生成,一路回车即可,最后会在用户目录.ssh目录下生成id_rsa和id_rsa.pub两个文件,其中的id_rsa.pub文件既是公钥文件。将公钥文件按文本方式打开,复制其中的内容。下图是官网上扒下来的生成秘钥的截图。
ssh key gen.png
  • PuTTYgen软件生成

这是我使用的方法,这样可以使得windows和Linux的秘钥保持一致,操作也比较简单。

点击key->generate key pair之后,保持鼠标在软件界面内移动即可(这个软件已鼠标移动轨迹为基础生成秘钥),生成之后界面如下,key comment文本行可选择性的填写。生成之后记得将公钥和私钥保存下来。将界面上显示的公钥文本复制下来。
key gen.png
按如下步骤(Conversions-> Export OpenSSH key)即可生成Linux下可用的秘钥,假设保存为xxx文件
linux key.png
将xxx文件拷贝到Linux目录~/.ssh下,并在~/.ssh目录下建立文件名为config的文件,在文件中输入如下内容
IdentityFile ~/.ssh/xxx
保存文件,将xxx文件权限更改为700。

  • 上传公钥


打开全志官网公钥管理界面( https://open.allwinnertech.com/#/sdk/0/key),将上述流程中复制的公钥文本复制到公钥文本框中,名称按需填写,点击确定即可添加公钥。
add public key.png
执行如下指令测试公钥是否添加成功:
ssh USERNAME@sdk.allwinnertech.com

如果添加成功,则会显示如下信息:
add kye succeed.png
  • 安装repo引导脚本

注意不能使用Google官方的引导脚本,需要使用全志提供的引导脚本和repo仓库,其流程如下:
  • 下载repo引导脚本

使用如下指令下载,需要将username替换成全志官网的账户名。
git clone ssh://username@sdk.allwinnertech.com/git_repo/repo.git
  • 修改repo文件

将repo库下载成功之后,修改repo/repo文件中下面一行,将username替换成客户下载账号的用户名
REPO_URL='ssh://username@sdk.allwinnertech.com/git_repo/repo.git'
  • 将repo程序添加到环境变量

可执行下面的指令:
cp repo/repo /usr/bin/repo $ chmod 777 /usr/bin/repo
也可以使用ln -s指令创建软连接。

  • 安装python2.7


由于全志的repo依赖python2.6~2.7,因此需要安装一个对应版本的python,安装完成之后,记得将将/usr/bin/python替换或者软连接到python2.7。
python.png
  • sdk下载

下载就按下载说明中的步骤执行即可。
  • 创建sdk存放文件夹xxx并进入。
  • 执行指令  repo init -u      ssh://ziqifeinv@sdk.allwinnertech.com/git_repo/D1_Tina_Open/manifest.git      -b master -m tina-d1-h.xml


注意这里也许会提示你配置git用户名和邮箱,如下图所示:
git config.png
可以直接全局配置,也可进入xxx/.repo/manifests.git目录下给当前项目配置。

另外可能会提示身份不一致的问题,如下图所示:
config name.png
就行文本所提示的那样,可直接在上述repo init指令后接 --config-name yourname并执行,会提示输入name和email,输入并确认即可。 enter name.png
  • 执行 repo sync 指令将源码拉下来。

注意多留一点空间,源码不是一般的大啊,起码10G左右。
  • 创建分支


执行 repo start product-smartx-d1-h-tina-stable-v2.0 --all 指令,创建分支。完成之后代码库状态如下:
status.png
至此,源码下载完成了,可以进行tina镜像编译并打包等,各位自行探索,我要他的交叉编译工具链试试helloworld程序。

这里建议将工具链的可执行文件路径加入到环境变量,这样可以在任意地方执行riscv64-unknown-linux-gnu-gcc,还是很方便的,做法也很简单,在~/.bashrc文件末尾加上如下语句:
PATH=$PATH:你riscv64-unknown-linux-gnu-gcc所在的文件夹,如PATH=$PATH:/home/daxiong/Desktop/sipeed_licheeRV_86_panel/tina-d1-h/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin
然后执行 source ~/.bashrc  就可以导入环境变量了。

  • helloworld程序

这个就比较简单了,主要是使用交叉编译工具链编译一个helloworld程序,然后上传到开发板上执行,这里我就直接放结果了:

  • helloworld程序及编译如下:

helloworld.png
  • 程序上传到开发板

我用的scp指令,直接将Linux虚拟机下的程序传到开发板(虚拟机要装Samba服务)
scp.png
  • 程序执行

这倒是挺符合预期的

run.png
明天试试移植lgvl,今天太晚了。

回帖(1)

李俊

2022-5-1 11:46:26
666
1 举报
  • 谭藤先: 为什么你的评论可以少于5个字

更多回帖

发帖
×
20
完善资料,
赚取积分