立即注册
查看: 1087|回复: 1

全志D1开发板开发:编译第一个程序——Hello Word

已绑定手机
已实名认证
发表于 2021-12-20 16:59:17 | 显示全部楼层 |阅读模式 来自 广东省深圳市
本章节将讲解如何使用电脑(上位机)交叉编译一个打印 hello word 的小应用,并将其push到开发板(下位机)上运行起来,打印出 hello word。这是嵌入式应用开发的最基础步骤。在此之前,你需要具备嵌入式编程的基本知识,如下。

1、前要知识储备
掌握Linux基本命令行指令及工具
如 git make 以及文件操作等
掌握Linux 简单编程
基本的C语言编程
掌握嵌入式基本知识
嵌入式设备组成
嵌入式外设连接方式
如UART USB 网口 等基本接口
了解全志D1哪吒开发资源与对应接口分布

2、编译工具链准备
在Tina SDK中带有完整的编译工具链,在如下路径:
tina/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702
下载后放到Linux环境中解压:
tar -zxvf riscv64-glibc-gcc-thead_20200702.tar.gz
解压后可以看到已经解压出来的交叉编译链的文件夹:
*注意:如果是Windows环境下的Ubuntu虚拟机,不要放在共享文件夹下解压,否则会权限报错,要复制到Ubuntu非共享目录下再解压。

3、代码编写
创建文件
如果只是用编译工具链单独尝试编译一个小demo,也可以在Ubuntu任意目录下创建文件,比如就放到编译工具链路径下。
# 创建hello_word.c文件
touch hello_word.c
编写 Hello Word 代码
编写打印 Hello Word 代码的小demo,在 hello_word.c 中写入:
#include <stdio.h>
int main(int argc, char const *argv[])
{
    printf("Hello NeZha\n");
    return 0;
}

4、交叉编译
交叉编译是指在我们的PC机上编译可以在开发板上运行的可执行程序文件,因为是在上位机上编译,然后在不同体系结构的开发板上跑,所以叫交叉编译。
编译命令:
/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc -o hello_word hello_word.c
编译完成后会在当前文件夹生成名为hello_word文件,这个就是可以在开发板上运行的可执行文件。
1.jpg

5、下载 Hello Word 文件
编译完成后需要将编译好的hello_word文件下载到开发板上运行。
传入文件可使用的方法多种多样,仁者见仁智者见智。可用的方法简传单列举:
1.ADB工具
2.nfs挂载文件系统
3.使用sd卡挂载
在这里推荐使用我们的ADB工具来进行传输,不需要增加多余的连接,仅仅只需要一根USB线即可。

6、进阶:使用makefile编写一个工程
根据Tina开发惯例,建议开发者的应用工程放在package下,在package中创建test文件夹,在test文件夹中创建hello_word.c文件。
为了紧密结合嵌入式开发,此处提供使用Makefile 文件来进行编译Hello word 方法:
在源码目录创建Makefile文件:touch Makefile
编写Makefile:
#设置编译链路径及工具
CTOOL := riscv64-unknown-linux-gnu-
CCL := /home/kunyao/workspace/d_tina_d1_open_v1.0/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702
CC := ${CCL}/bin/${CTOOL}gcc
#设置编译规则
hello_word:hello_word.c
    ${CC} -o hello_word hello_word.c
#清理规则
clean:
    rm hello_word
保存后在终端make即可生成hello_word文件,用如上ADB方法将其传入开发板即可。
*可选:将交叉编译链设置为当前环境变量
export PATH=**/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/:$PATH
已绑定手机
发表于 2024-1-28 14:03:35 | 显示全部楼层 来自 广东省深圳市龙岗区
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
微信客服扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表