uboot向核心模組傳遞引數的方法

2022-05-04 00:45:10 字數 1936 閱讀 2436

1、module_param(name, type, perm); 定義乙個模組引數,

name 變數名

type 資料型別

bool:布林型

invbool:乙個布林型( true 或者 false)值(相關的變數應當是 int 型別).invbool 型別顛倒了值,所以真值變成 false,反之亦然.

charp :乙個字元指標值. 記憶體為使用者提供的字串分配, 指標因此設定.

int:整形

long:長整形

short:短整形

uint:無符號整形

ulong:無符號長整形

ushort:無符號短整形

perm 訪問許可權

#define s_irwxu 00700

#define s_irusr 00400

#define s_iwusr 00200

#define s_ixusr 00100

#define s_irwxg 00070

#define s_irgrp 00040

#define s_iwgrp 00020

#define s_ixgrp 00010

#define s_irwxo 00007

#define s_iroth 00004

#define s_iwoth 00002

#define s_ixoth 00001

#define s_irugo (s_irusr|s_irgrp|s_iroth) //

可以被所有使用者訪問不能改寫

2、module_param_array(name, type, nump, perm);  定義模組引數陣列

nump 陣列元素的個數

static

int test=0

;module_param(test,

int, s_irugo);

在uboot 的啟動引數中傳遞引數 例如:

setenv bootargs console=ttys0,115200n8  root=$ rootfstype=ext4  rootflags=data=writeback quiet testmodule.test=1

testmodule模組名稱(也就是.o檔案或者.ko檔案的名稱) test 模組引數名稱 如果設定了上面的啟動引數,在驅動中就可以看到test的值為1

驅動中定義

static

int test=0

; static

int __init get_test(char *str)

__setup(

"mode_test=

", get_test);

static

char *test_name;

static

int __init get_testname(char *str)

__setup(

"mode_testname=

", get_testname);

在啟動引數中

setenv bootargs console=ttys0,115200n8 root=$ rootfstype=ext4  rootflags=data=writeback quiet  test=1 test_name=name

按上面的設定,在驅動可以得到test的值為1,test_name為「name」。

u boot向Linux核心傳遞引數tag原理分析

u boot最主要的功能是引導os,目前對linux支援的相對比較好,引導 的意義不僅僅是拷貝核心,執行核心,還要給核心kernel傳遞板子的相關引數,打個比方,u boot相當於是一名專業功底深厚的 接待員 他會先初始化好一些外圍裝置,比如說串列埠,sdram nand flash mmc等,初始...

uboot傳遞核心引數全解析

一 啟動引數的傳遞過程 啟動引數是包裝在資料結構裡的,在linux kernel啟動的時候,bootloader把這個資料結構拷貝到某個位址,在改動pc跳向核心介面的同時,通過通用暫存器r2來傳遞這個位址的值,下面這句話就是uboot跳向linux kernel的 bootm命令 thekernel...

UBOOT引導Linux核心及向核心傳遞引數的方式

一直以來沒有想過有什麼好的辦法通過暫存器向核心傳遞引數,直到今天讀uboot的實現方式。在uboot中,引導核心最常用的方法是bootm命令,bootm命令可以引導 uboot格式 的核心。先花點時間了解一下什麼是 uboot格式 的核心吧 用uboot自帶的mkimage命令生成的核心稱為 ubo...