在Fedora 12下編譯和除錯RT Thread

2021-09-01 05:54:26 字數 2686 閱讀 1981

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

在fedora 12下編譯和除錯rt-thraed

1.安裝編譯工具

yum install sconsyum install python
[lixianjing@vm os]$ wget  os]$ unzip rt-thread-0.4.0/ beta1.zip[lixianjing@vm os]$ cd rt-thread-0.4.0/ beta1/bsp/mini2440/
3.修改rtconfig.h

//#define rt_using_newlib//#define rt_using_pthreads
使用newlib和pthreads,在我這裡有些問題,編譯時會說標頭檔案有衝突。加上-nostdinc選項之後又說有些標頭檔案找不到了。估計newlib還不太成熟,所以我暫時沒有用newlib。4.修改rtconfig.py

#exec_path  = 'e:/program files/codesourcery/sourcery g++ lite/bin'    exec_path = '/home/lixianjing/codesourcery/sourcery_g++_lite/bin'    #prefix = 'arm-none-eabi-'    prefix = 'arm-none-linux-gnueabi-'    lflags += ' -nostdlib'    cflags += ' -nostdinc -nostdlib'
如果不加nostd,就會出現標頭檔案衝突的情況,通常編譯核心都是要加這個選項的,但是不清楚為什麼在windows下沒有問題。5.修改sconstruct

# build programenv.program(target, objs, libs=['libgcc.a'], libpath='/home/lixianjing/codesourcery/sourcery_g++_lite/lib/gcc/arm-none-linux-gnueabi/4.4.1/armv4t/')
因為arm沒有除法指令,所以除法是用函式實現的,這些函式在libgcc.a裡。因為前面加了nostdlib選項,所以這裡要鏈結一下libgcc.a。6.加上乙個raise函式raise.c:

void raise(void)
這個函式可能是libgcc.a裡某處引了它,應該相當於abort之類的功能吧,這裡實現乙個空函式即可。7.修改sconscript

這裡只是把raise.c加入編譯。8.編譯rt-thread

[lixianjing@vm mini2440]$ scons
如果出現下列資訊,那就是編譯成功了:

arm-none-linux-gnueabi-objcopy -o binary rtthread-mini2440.axf rtthread.binarm-none-linux-gnueabi-size rtthread-mini2440.axf  text       data        bss        dec        hex    filename363064       1516      14740     379320      5c9b8    rtthread-mini2440.axfscons: done building targets.
[lixianjing@vm os]$ git clone git: os]$ cd mini2440
10.修改hw/mini2440.c

static void mini2440_reset(void *opaque)       return;    }...}
開始我直接編譯了qemu,執行時總出現無效位址問題。後來發現是qemu是按u-boot載入的rt-thread,rt-thread載入的位址與u-boot是不同的,所以根本沒有執行到rt-thread的**。11.編譯qemu

[lixianjing@vm mini2440]$ ./configure --target-list=arm-softmmu --disable-linux-user;make[lixianjing@vm mini2440]$ su[root@vm mini2440]# make install
12.除錯執行rt-thread開兩個終端,都進入bsp/mini2440目錄。終端1:

[lixianjing@vm mini2440]$ qemu-system-arm -s -s -m mini2440 -kernel rtthread.bin -serial stdios3c: clk=240 hclk=240 pclk=240 uclk=57qemu: ee24c08_initdm9000: init qemu mac : 52:54:00:12:34:56qemu mini2440_reset: loaded kernel rtthread.bin at 0x30000000
加 -s -s 選項表示qemu等待偵錯程式連線。終端2:

1234是qemu等待偵錯程式的預設埠號。然後就可以用gdb研究rt-thread了。這裡說明一下,我的工作目錄是/home/lixianjing/lab/os,針對mini2440定製的qemu在mini2440下,rt-thread源**在rt-thread-0.4.0 beta1下。

給我老師的人工智慧教程打call!

fedora 12下安裝mysql及相關目錄介紹

fedora 12下安裝mysql及相關目錄介紹 開啟終端,用su使用者登陸 輸入 shell yum install mysql mysql server 等以上兩個軟體包安裝好之後 輸入 shell chkconfig levels 235 mysqld on etc init.d mysqld...

在Fedora 12上安裝谷歌應用程式

如果你對google s chrome瀏覽器感興趣,這裡有乙個非穩定的64位版本,你可以使用yum來安裝它 sudo yum install google chrome unstable 安裝好之後,執行你的 bashrc file source bashrc 現在google chrome現在可以...

在fedora下重新編譯aria2

首先安裝乙個dnf外掛程式,sudo dnf install dnf command versionlock aria2 1.35.0 aria2 1.35.0.tar.xz aria2.spec 1 directory,2 files源 就在aria2 1.35.0的src目錄下,修改他並將其重新...