chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

飛凌嵌入式i.MX8MP開(kāi)發(fā)板移植驅(qū)動(dòng),其實(shí)可以很簡(jiǎn)單

飛凌嵌入式 ? 2022-11-15 14:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

各位工程師用戶在對(duì)飛凌嵌入式OKMX8MP-C開(kāi)發(fā)板進(jìn)行開(kāi)發(fā)的過(guò)程中,可能會(huì)遇到需要移植驅(qū)動(dòng)的情況。為避免用戶因不了解移植驅(qū)動(dòng)的過(guò)程而影響開(kāi)發(fā)進(jìn)度,今天小編會(huì)以寫一個(gè)hello驅(qū)動(dòng)為例,演示移植驅(qū)動(dòng)的過(guò)程,有需求的小伙伴可參考此方法自行操作。

3f150496-5ec3-11ed-b116-dac502259ad0.png

01

進(jìn)入源碼的drivers目錄下,并創(chuàng)建一個(gè)名為hello的目錄:


forlinx@ubuntu:~$  cd  /home/forlinx/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers
forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$mkdir  hello

02

進(jìn)入hello目錄,創(chuàng)建hello.c:


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$  cd hello
forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  vi hello.c

在hello.c中寫入如下內(nèi)容:


#include  
#include  
static  int hello_init(void)
{
printk(KERN_ALERT  "Hello world\n");
return  0;
}
static  void hello_exit(void)
{
printk(KERN_ALERT  "Goodbye world\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual  BSD/GPL");


程序含義:insmod驅(qū)動(dòng)掛載時(shí)打印Hello world,rmmod驅(qū)動(dòng)卸載時(shí)打印Goodbye world

03

在該文件夾下創(chuàng)建Kconfig,Makefile兩個(gè)文件。


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  vi  Kconfig

在Kconfig文件中寫入如下內(nèi)容:


config  HAVE_HELLO
tristate       "hello driver"
help
This  hello  driver  is  just  to  show  how  to  develop  driver  process.


This  driver  can  also  be  built  as  a  module.  If  so,  the  module will  be  called  .
default  y
#endmenu

表示如果使能了CONFIG_HAVE_HELLO,在內(nèi)核裁剪配置文件中,將顯示hellodrivers菜單,默認(rèn)編譯進(jìn)內(nèi)核:

y:編譯進(jìn)內(nèi)核

m:編譯為模塊.ko文件

n:表示不編譯,未使能。


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  vi  Kconfig

在Makefile文件中寫入如下內(nèi)容:

obj-$(CONFIG_HAVE_HELLO)        +=      hello.o

注意:

宏定義的名字要和Kconfig中的一樣。后面添加需要編譯的文件名,因?yàn)閮?nèi)核會(huì)自動(dòng)添加前綴CONFIG,所以我們這里也要在名字前面添加CONFIG_,表示CONFIG_HAVE_HELLO使能時(shí),編譯規(guī)則指定的文件為hello.c。

給添加的這三個(gè)文件權(quán)限:


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  chmod  777 hello.c
forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  chmod  777 Kconfig
forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  chmod  777 Makefile

04

編輯drivers頂層的Kconfig,Makefile文件。


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$  cd  ..
forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$  vi Kconfig

在Kconfig文件中寫入如下內(nèi)容:


source  "drivers/counter/Kconfig"
source  "drivers/mxc/Kconfig"
source  "drivers/hello/Kconfig"    //在endmenu前添加hello文件夾的配置文件解析
endmenu

如此一來(lái),配置系統(tǒng)就會(huì)按照這個(gè)配置去解析hello文件夾下的Kconfig。

編輯Makefile:


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$  vi Makefile

在Makefile文件中寫入如下內(nèi)容:


obj-$(CONFIG_COUNTER)           += counter/
obj-y                           += mxc/
obj-$(CONFIG_HAVE_HELLO)        +=      hello/     //在Makefile最后加入這一句

這句話的作用是當(dāng)CONFIG_HAVE_HELLO使能后,在哪里去找源文件。再結(jié)合hello文件下模塊Makefile就形成了層次式Makefile。注意不要少了/,這里添加自定義文件夾的名字,表示把這個(gè)文件夾編譯進(jìn)內(nèi)核。

05

開(kāi)始編譯:


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$  cd ../..
forlinx@ubuntu:~/work/OK8MP-linux-sdk$  .  /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
forlinx@ubuntu:~/work/OK8MP-linux-sdk$  .  environment-setup-aarch64-poky-linux
forlinx@ubuntu:~/work/OK8MP-linux-sdk$  cd  OK8MP-linux-kernel
forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel$  make modules
scripts/kconfig/conf --syncconfig Kconfig
drivers/hello/Kconfig:7:warning:  ignoring unsupported character '?'
drivers/hello/Kconfig:7:warning:  ignoring unsupported character '?'
drivers/hello/Kconfig:7:warning:  ignoring unsupported character '?'
drivers/hello/Kconfig:7:warning:  ignoring unsupported character '?'
*
* Restart config...
*
*
* Device Drivers
*
Trust the bootloader  to initialize Linux's CRNG (RANDOM_TRUST_BOOTLOADER) [N/y/?] n
Platform support for  Chrome hardware (transitional) (MFD_CROS_EC) [Y/n/m/?] y
Trusted Execution  Environment support (TEE) [Y/n/m/?] y
hello driver  (HAVE_HELLO) [Y/n/m/?] (NEW) m    //將hello驅(qū)動(dòng)編譯進(jìn)內(nèi)核就配置為m
CALL   scripts/checksyscalls.sh
CALL   scripts/atomic/check-atomics.sh
CHK      include/generated/compile.h
GZIP   kernel/config_data.gz
CC     kernel/configs.o
[…]
LD      vmlinux
SORTEX  vmlinux
SYSMAP  System.map
Building modules,  stage 2.
MODPOST 536 modules
CC [M] drivers/hello/hello.mod.o
LD [M] drivers/hello/hello.ko

編譯完成后,即可在OK8MP-linux-kernel/drivers/hello目錄下看到編譯生成的驅(qū)動(dòng)了:


forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/$  ls drivers/hello
hello.c  hello.ko  hello.mod  hello.mod.c  hello.mod.o  hello.o  Kconfig  Makefile modules.order

06

將hello.ko使用U盤或TF卡拷貝到開(kāi)發(fā)板里進(jìn)行驗(yàn)證:

root@OK8MP:~# cd  /run/media/sda1/              //進(jìn)入U(xiǎn)盤的路徑下
root@OK8MP:/run/media/sda1#  insmod  hello.ko   //掛載hello.ko
[  138.679964] Hello  world                     //掛載驅(qū)動(dòng)打印信息
root@OK8MP:/run/media/sda1#  rmmod  hello.ko    //卸載hello.ko
[  142.022115]  Goodbye  world                  //卸載驅(qū)動(dòng)打印信息
root@OK8MP:/run/media/sda1#

由上述測(cè)試可看,hello.ko驅(qū)動(dòng)可正常運(yùn)行。

以上就是小編為大家演示的自行書寫并添加一個(gè)驅(qū)動(dòng)的過(guò)程,若您想要移植某一個(gè)模塊,可向模塊廠家索要現(xiàn)成的驅(qū)動(dòng).c文件,之后再按照上述步驟配置Makefile和Kconfig即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    135

    文章

    9582

    瀏覽量

    393431
  • 嵌入式
    +關(guān)注

    關(guān)注

    5208

    文章

    20620

    瀏覽量

    336671
  • NXP
    NXP
    +關(guān)注

    關(guān)注

    61

    文章

    1410

    瀏覽量

    199003
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式RV1126B開(kāi)發(fā)板試用體驗(yàn)】初識(shí)嵌入式RV1126B開(kāi)發(fā)板

    排列也整齊合理。下面是嵌入式RV1126B開(kāi)發(fā)板的詳細(xì)介紹,文字中有鏈接可以到達(dá)
    發(fā)表于 04-13 17:27

    嵌入式RV1126B開(kāi)發(fā)板】+兩款開(kāi)發(fā)板之比較

    目前兩款常見(jiàn)的RV1126B開(kāi)發(fā)板,一款是靈眸科技推出的EASY EAI Nano-TB(RV1126B)開(kāi)發(fā)套件,另一款就是嵌入式RV
    發(fā)表于 03-05 23:32

    嵌入式RV1126B開(kāi)發(fā)板】+初識(shí)篇

    OK1126B-S開(kāi)發(fā)板嵌入式技術(shù)有限公司推出的一款開(kāi)發(fā),它配有十分豐富的外設(shè)資源,以此為基礎(chǔ)可使學(xué)習(xí)及
    發(fā)表于 03-04 21:13

    探索FRDM - IMX8MPLUS開(kāi)發(fā)板:開(kāi)啟嵌入式開(kāi)發(fā)新旅程

    探索FRDM - IMX8MPLUS開(kāi)發(fā)板:開(kāi)啟嵌入式開(kāi)發(fā)新旅程 作為電子工程師,我們總是在尋找性能卓越、功能豐富且易于上手的開(kāi)發(fā)板,以滿足不同項(xiàng)目的需求。NXP的FRDM - IMX
    的頭像 發(fā)表于 12-24 11:00 ?490次閱讀

    【作品合集】嵌入式OK527N-C開(kāi)發(fā)板測(cè)評(píng)

    嵌入式OK527N-C開(kāi)發(fā)板測(cè)評(píng)作品合集 產(chǎn)品介紹: OK527-C開(kāi)發(fā)板采用核心+底板分
    發(fā)表于 09-22 15:54

    嵌入式2026屆校園招聘正式啟動(dòng)!

    嵌入式2026屆校園招聘正式啟動(dòng)!
    的頭像 發(fā)表于 09-19 08:03 ?1333次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>2026屆校園招聘正式啟動(dòng)!

    送啦!嵌入式聯(lián)合NXP邀您參加OK-MX9596-C開(kāi)發(fā)板試用活動(dòng)

    送啦!嵌入式聯(lián)合NXP邀您參加OK-MX9596-C開(kāi)發(fā)板試用活動(dòng)
    的頭像 發(fā)表于 08-22 08:03 ?1111次閱讀
    送啦!<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>聯(lián)合NXP邀您參加OK-<b class='flag-5'>MX</b>9596-C<b class='flag-5'>開(kāi)發(fā)板</b>試用活動(dòng)

    RK3568開(kāi)發(fā)板暗藏32位兼容開(kāi)關(guān)?嵌入式帶你一鍵解鎖!

    RK3568是一款64位處理器,嵌入式為其提供的交叉編譯器也是64位的,然而部分用戶可能需要在RK3568開(kāi)發(fā)板上運(yùn)行32位應(yīng)用。本文將詳細(xì)闡述如何使用32位交叉編譯器,編譯出32
    的頭像 發(fā)表于 07-19 08:49 ?4537次閱讀
    RK3568<b class='flag-5'>開(kāi)發(fā)板</b>暗藏32位兼容開(kāi)關(guān)?<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>帶你一鍵解鎖!

    嵌入式受邀亮相「2025龍芯產(chǎn)品發(fā)布暨用戶大會(huì)」

    6月26日,2025龍芯產(chǎn)品發(fā)布暨用戶大會(huì)在北京隆重舉行,嵌入式作為龍芯重要的生態(tài)合作伙伴受邀亮相,并帶來(lái)了基于龍芯2K0300-i處理器設(shè)計(jì)開(kāi)
    的頭像 發(fā)表于 06-27 08:07 ?1528次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>受邀亮相「2025龍芯產(chǎn)品發(fā)布暨用戶大會(huì)」

    T527N開(kāi)發(fā)板試用】開(kāi)箱與開(kāi)發(fā)板介紹視頻

    嵌入式OK527N-C開(kāi)發(fā)板開(kāi)箱介紹】 https://www.bilibili.com/video/BV1sfKSzmEtU/?share_source=copy_web&
    發(fā)表于 06-26 09:43

    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建!i.MX9352開(kāi)發(fā)板 + Linux 6.1實(shí)戰(zhàn)示例

    本文就將以嵌入式OK-MX9352-C開(kāi)發(fā)板(搭載了在工業(yè)物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的NXP i.MX
    的頭像 發(fā)表于 06-13 16:42 ?1465次閱讀
    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建!<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>i.MX</b>9352<b class='flag-5'>開(kāi)發(fā)板</b> + Linux 6.1實(shí)戰(zhàn)示例

    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建,i.MX9352 + Linux 6.1實(shí)戰(zhàn)示例

    本文將以嵌入式OK-MX9352-C開(kāi)發(fā)板(搭載了在工業(yè)物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的NXP i.MX
    的頭像 發(fā)表于 05-30 11:08 ?2499次閱讀
    5分鐘學(xué)會(huì)網(wǎng)絡(luò)服務(wù)搭建,<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>i.MX</b>9352 + Linux 6.1實(shí)戰(zhàn)示例

    嵌入式ElfBoard ELF 1板卡-Uboot

    /SourceCode下載。不過(guò)我們目前使用的uboot源碼不是在這個(gè)網(wǎng)站下載的,而是由NXP公司提供的。NXP公司在推廣i.MX6ULL芯片時(shí),會(huì)開(kāi)發(fā)出一套i.MX6ULL EVK評(píng)估
    發(fā)表于 05-22 10:44

    「2025恩智浦創(chuàng)新技術(shù)峰會(huì)」嵌入式亮相上海首站

    2025年5月14日,【2025年恩智浦創(chuàng)新技術(shù)峰會(huì)】首站登陸上海,嵌入式作為恩智浦(NXP)金牌合作伙伴受邀參會(huì),聚焦“工業(yè)與物聯(lián)網(wǎng)”領(lǐng)域,攜多款邊緣側(cè)AI核心、
    的頭像 發(fā)表于 05-15 13:38 ?1578次閱讀
    「2025恩智浦創(chuàng)新技術(shù)峰會(huì)」<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>亮相上海首站

    煥新登場(chǎng)!嵌入式FET-MX8MPQ-SMARC核心發(fā)布

    嵌入式FET-MX8MPQ-SMARC核心基于NXP i.MX8MPQ處理器
    的頭像 發(fā)表于 05-07 11:29 ?1216次閱讀
    煥新登場(chǎng)!<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>FET-<b class='flag-5'>MX8</b>MPQ-SMARC核心<b class='flag-5'>板</b>發(fā)布