先來設定一下工作目錄所在位置, 在這裡我的 Bootloader 資料放在 /home/dclab/bootLoader/vivi ,所以後面就用 $VIVI表示
# export VIVI=/home/dclab/bootLoader/vivi
STEP2.
首先我們新增一個檔案 led.c , 這個檔案內容負責宣告新增指令用!
# vim $VIVI/lib/led.c
[檔案] $vivi/lib/led.c:
#include <config.h>
#include <command.h>
#include <types.h>
#include "printk.h"
void command_led(int argc, const char **argv){
printk("show led....\n"); // 當執行指令後, 螢幕顯示出來的資訊內容!
}
user_command_t led_cmd = { // 宣告一個指令結構
"led", // 命令的名稱
command_led, // 實現該命令的具體函數
NULL, // 指向下一條命令的指
"help led [{cmds}]\t\t\t -- Led show program" // 命令的使用說明
};
[參閱] $vivi/include/command.h:
typedef struct user_command {
const char *name;
void (*cmdfunc)(int argc, const char **);
struct user_command *next_cmd;
const char *helpstr;
} user_command_t;
STEP3.
[檔案] 修改 $vivi/lib/command.c 檔案, 尋找 int init_builtin_cmds(void) 處, 新增以下內容:
+ :351 extern user_command_t led_cmd; // 新增於 int init_builtin_cmds(void) 上方
+ :398 add_command(&led_cmd); // 新增於 int init_builtin_cmds(void) 內
[檔案] 修改 $vivi/lib/Makefile 檔案, 新增以下內容
+ :10 obj-y += led.o
STEP4.
接著就可以編譯 vivi 看看
# make clean
# make
開發版上測試指令, 輸入上方宣告的指令 " led "
# led
參考資料:
http://blog.csdn.net/hansir007/archive/2007/08/29/1764077.aspx
http://www.cublog.cn/u/21948/showart.php?id=379460
沒有留言:
張貼留言