之前的工作內容大多為除錯各部分的硬體和系統的bug,真正編寫**的機會很少,或者說根本沒有。
首先,要達到乙個基本的目的,在ubuntu18.04的pc機上,編寫出的程式可以在板子上跑的通。
很簡單,只要安裝交叉編譯工具鏈即可。
sudo apt-get install gcc-5-aarch64-linux-gnu
這樣使用aarch64-linux-gnu-gcc hello.c,命令編譯得到的a.out即可在開發板上執行。
2.由於交叉編譯,若一直使用filezilla來進行檔案傳輸,有些多次一舉,因此計畫採用掛載pc機共享目錄的方式進行
首先得在宿主機上安裝nfs伺服器,並設定共享目錄(以ubuntu 12.04為例):
1_1、sudo apt-get install nfs-kernel-server nfs-common #安裝nfs伺服器#
1_2、sudo vim /etc/exports #開啟exports,更改配置檔案#
1_3、在最後加入/home/steve/share *(rw,sync,no_root_squash) #設定共享目錄#
1_4、sudo /etc/init.d/nfs-kernel-server restart #重啟nfs伺服器#
做完這四步,基本就完成了宿主機上nfs伺服器的配置,你要是不放心的話,也可以在本地掛載,做個測試:
1_5、sudo mount -t nfs -o nolock 192.168.0.***:/home/steve/share /mnt
# 其中,棕色為伺服器ip位址,紅色為共享的目錄, 藍色為本地的掛載目錄 #
開發板也需要安裝nfs服務:
sudo apt-get install nfs-common
至此,開發板已經可以訪問pc機的目錄了。
3、最根本的目的是,在pc機上編譯驅動,可以直接在開發板上執行,而不必編譯整個核心。
由於rk3399的核心編譯時,使用的是乙個rockchip提供的sdk,經過測試,如果將其中的kernel單獨拷貝出來,那麼首先核心編譯就不通過,所以後續的交叉編譯就無法執行,因此,直接將makefile中的核心路徑,指定為sdk中的核心路徑,編譯模組成功,insmod成功,可以在/proc/devices路徑下看到自己註冊的字元裝置。
makefile採用了韋東山的檔案:
kern_dir = /home/cwp/work/rockchip/linux/kernel
all:
make -c $(kern_dir) m=`pwd` modules
clean:
make -c $(kern_dir) m=`pwd` modules clean
rm -rf modules.order
obj-m += first_drv.o
補充:結果編譯出的ko模組時x86-64架構的,很明顯,需要修改核心中的架構和編譯器配置,發現如下兩行並做出修改:
#arch ?= $(subarch)
#cross_compile ?= $(config_cross_compile:"%"=%)
arch ?= arm64
cross_compile ?= aarch64-linux-gnu-
RK3399晶元規格書,RK3399參考設計方案
rk3399晶元規格書,rk3399參考設計方案 較新的rk3368雖然專門針對電視盒子做了優化,但是其硬體效能相比上一代的rk3288還要孱弱,老當益壯的rk3288退休不得,與rk3368勉力維持著瑞芯微2015年的江山。進入2016年,瑞芯微rockchip再次調轉槍頭,緊跟行業趨勢,順勢而為...
RK3399 產品選擇
rk3399 是一款的arm64處理器,其內部整合gpu,對多 人臉識別等,支援都非常不錯。在國內,選擇以rk3399為核心,開發產品的知名公司,有很多。就我個人而言,主要使用過兩家公司的開發板。1 firefly rk3399 開發板 2 nanopc t4開發板 兩家公司可能側重點不同,產品特性...
rk3399自用說明記錄
目前試過無法開機的 打包解包相關命令 rk3399原廠系統root,目前理解就是以下解鎖指令可以真正解鎖system分割槽 嘗試修改init.rc和init.c使用android關機到kernel層 小白使用寶典,大神僅供參考。本記錄只講在windows下的操作。本片講述android系統的少些嘗試...