蜂鳥E203系列——Linux下運行hello world常式

  • 2020 年 7 月 11 日
  • 筆記

欲觀原文,請君移步

創建程式

  1. 在 ~/hbird-e-sdk-master/software 路徑下創建一個「helloworld」中文件夾

  1. 在 ~/hbird-e-sdk-master/software/helloworld 路徑下創建文件「helloworld.c」

內容如下:

#include<stdio.h>

int main(void)
{
    printf("hello world!");
    printf("\n");
    printf("hello anytao 0!");
    printf("\n");
    printf("hello anytao 1!");
    printf("\n");
    printf("hello anytao 2!");
    printf("\n");
    printf("hello anytao 3!");
    printf("\n");
    printf("hello anytao 4!");
    printf("\n");
    printf("hello anytao 5!");
    printf("\n");
    printf("hello anytao 6!");
    printf("\n");
    printf("hello anytao 7!");
    printf("\n");
    printf("hello anytao 8!");
    printf("\n");
    printf("hello anytao 9!");
    printf("\n");
    printf("hello anytao 10!");
    printf("\n");
    printf("hello anytao 11!");
    printf("\n");
    return 0;
}

  1. 在 ~/hbird-e-sdk-master/software/helloworld 路徑下創建文件「Makefile」
TARGET = helloworld
GFLAGS += -O2
BSP_BASE = ../../bsp
C_SRCS += helloworld.c


include $(BSP_BASE)/$(BOARD)/env/common.mk

編譯運行

1 編譯程式使得程式從Flash直接運行

make dasm PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=flashxip USE_NANO=1 NANO_PFLOA=0


  • dasm :表示對程式進行編譯

  • PROGRAM : 表示需要編譯的程式

  • BOARD : 開發板所對應的BSP名稱

  • CORE : 內核處理器型號

  • USE_NANO : 指明使用newlib-nano作為c運行庫

  • NANO_PFLOAT : 是否需要輸出浮點


運行

make upload PROGRAM=helloworld BOARD=hbird-e200 CORE=e203

字元串在串口顯示終端如下圖所示,通過列印可以看到運行速度比較慢,這是因為程式直接從 flash 中運行需要從 flash 中取指令,取指時間較長,影響了程式的執行速度。

但是由於程式被燒寫進了 flash 中,因此程式不會因為掉電而丟失。

2 編譯程式使得程式從ITCM直接運行

make dasm PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=itcm USE_NANO=1 NANO_PFLOA=0

運行

make upload PROGRAM=helloworld BOARD=hbird-e200 CORE=e203

採用這種方法編譯,通過列印可以看到運行速度非常快,這是因為程式直接從 ITCM 運行時,每次都是從 ITCM 中取指令,所以執行速度非常快。

3 編譯程式使得程式從Flash上載至ITCM中運行

make dasm PROGRAM=helloworld BOARD=hbird-e200 CORE=e203 DOWNLOAD=flash USE_NANO=1 NANO_PFLOA=0

運行

make upload PROGRAM=helloworld BOARD=hbird-e200 CORE=e203

採用這種方法編譯,通過列印可以看到運行速度非常快,這是因為程式直接從 ITCM 運行時,每次都是從 ITCM 中取指令,所以執行速度非常快。

但是由於程式被燒寫進了 flash 中,因此程式不會因為掉電而丟失。