查看: 848|回复: 0
收起左侧

哪吒系列文章之08——编译第一个程序:Hello Word

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2022-6-21 08:23
  • 签到天数: 2 天

    [LV.1]

    发表于 2022-1-23 12:21:53 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 塞巴斯蒂安 于 2022-1-23 12:21 编辑

    本章节将讲解如何使用电脑(上位机)交叉编译一个打印 hello word 的小应用,并将其push到开发板(下位机)上运行起来,打印出 hello word。这是嵌入式应用开发的最基础步骤。在此之前,你需要具备嵌入式编程的基本知识,如下。

    前要知识储备

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

    一、编译工具链准备


    在Tina SDK中带有完整的编译工具链,在如下路径:
    1. tina/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702
    复制代码
    如果您只是想先试玩一下,还没下载完整源码,可以单独下载编译工具链:
    riscv64-glibc-gcc-thead_20200702下载
    百度网盘链接:https://pan.baidu.com/s/16_nIQpfLQaW15i1zGDqthQ
    提取码:xn4u


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

    1. tar -zxvf riscv64-glibc-gcc-thead_20200702.tar.gz
    复制代码
    解压后可以看到已经解压出来的交叉编译链的文件夹:
    *注意:如果是Windows环境下的Ubuntu虚拟机,不要放在共享文件夹下解压,否则会权限报错,要复制到Ubuntu非共享目录下再解压。
    *同时可以到平头哥社区下载最新/各版本C900系列编译工具链:
    https://occ.t-head.cn/community/download?id=3913221581316624384


    二、代码编写


    创建文件

    如果只是用编译工具链单独尝试编译一个小demo,也可以在Ubuntu任意目录下创建文件,比如就放到编译工具链路径下。
    1. # 创建hello_word.c文件
    2. touch hello_word.c
    复制代码

    编写 Hello Word 代码

    编写打印 Hello Word 代码的小demo,在 hello_word.c 中写入:
    1. #include <stdio.h>
    2. int main(int argc, char const *argv[])
    3. {
    4.     printf("Hello NeZha\n");
    5.     return 0;
    6. }
    复制代码

    三、交叉编译

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

    编译命令:
    1. /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文件,这个就是可以在开发板上运行的可执行文件。
    全志D1 芯片及应用-哪吒系列文章之08——编译第一个程序:Hello Wordrisc-v单片机中文社区(1)

    四、下载 Hello Word 文件

    编译完成后需要将编译好的hello_word文件下载到开发板上运行。

    传入文件可使用的方法多种多样,仁者见仁智者见智。可用的方法简传单列举:
    • ADB工具
    • nfs挂载文件系统
    • 使用SD卡挂载

    在这里推荐使用我们的ADB工具来进行传输,不需要增加多余的连接,仅仅只需要一根USB线即可。


    五、ADB

    ADB的使用及介绍链接就贴在这里了:ADB使用上手连接

    确认设备连接正常后:
    1. adb push hello_word ./.
    复制代码
    ADB为Windows下工具,所以使用cmd来执行。

    确保ADB已经添加进环境变量中

    *注意:Windows 下的路径为反斜线 Linux中为斜线

    此时在Tina跟文件系统中的/root目录下就有hello_word文件。

    赋予它可执行权限
    1. chmod +x hello_word
    2. ./hello_word
    复制代码
    执行结果:
    1. root@TinaLinux:~# ls
    2. hello_word  main
    3. root@TinaLinux:~# chmod +x hello_word
    4. root@TinaLinux:~# ./hello_word
    5. Hello NeZha
    复制代码
    如果你看到 "Hello NeZha" 这行打印,那么恭喜你,你已经开发出在哪吒上的第一个应用了!

    六、进阶:使用makefile编写一个工程

    根据Tina开发惯例,建议开发者的应用工程放在package下,在package中创建test文件夹,在test文件夹中创建hello_word.c文件。

    为了紧密结合嵌入式开发,此处提供使用Makefile 文件来进行编译Hello word 方法:

    在源码目录创建Makefile文件:
    1. touch Makefile
    复制代码
    编写Makefile:
    1. #设置编译链路径及工具
    2. CTOOL := riscv64-unknown-linux-gnu-
    3. CCL := /home/kunyao/workspace/d_tina_d1_open_v1.0/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702
    4. CC := ${CCL}/bin/${CTOOL}gcc

    5. #设置编译规则
    6. hello_word:hello_word.c
    7.     ${CC} -o hello_word hello_word.c

    8. #清理规则
    9. clean:
    10.     rm hello_word
    复制代码
    保存后在终端make即可生成hello_word文件,用如上ADB方法将其传入开发板即可。

    *可选:将交叉编译链设置为当前环境变量
    1. export PATH=**/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/:$PATH
    复制代码





    上一篇:哪吒系列文章之07——开发板硬件简介
    下一篇:哪吒系列文章之09——USB摄像头拍照Demo
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条


    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-4-19 02:55 , Processed in 0.740325 second(s), 49 queries .

    快速回复 返回顶部 返回列表