蜂鳥E203系列——Linux下執行hello world例程

瓜大三哥發表於2020-07-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 中,因此程式不會因為掉電而丟失。

相關文章