無(wú)論是Linux還是Python,其學(xué)習(xí)過(guò)程對(duì)于硬件都沒(méi)什么要求,對(duì)于知識(shí)的掌握才是核心。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),金平網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:金平等地區(qū)。金平做網(wǎng)站價(jià)格咨詢:028-86922220
理論上用樹(shù)莓派學(xué)習(xí)當(dāng)然可以,但是鑒于你依然處于初學(xué)者水平,特別是Linux相關(guān)的不夠熟練,還是不太建議你是用樹(shù)莓派來(lái)進(jìn)行學(xué)習(xí)。
如你所見(jiàn),樹(shù)莓派是一個(gè)很需要DIY能力的“玩具”,非??犰?,但對(duì)于入門(mén)學(xué)習(xí)幾乎沒(méi)有什么幫助——特別是對(duì)于Python,即使Windows環(huán)境也完全不會(huì)影響你的學(xué)習(xí)。
請(qǐng)記?。涸谖慈腴T(mén)之前,應(yīng)該盡力去降低自己的學(xué)習(xí)難度,而不是為了好玩或者其他原因,來(lái)憑空給自己的學(xué)習(xí)道路增加許多麻煩。
之前筆記本換了一塊SSD,原來(lái)的那塊500GB的機(jī)械硬盤(pán)一直閑置沒(méi)用,最近淘寶買(mǎi)了一個(gè)硬盤(pán)盒子,把它當(dāng)作移動(dòng)硬盤(pán)來(lái)使,順便實(shí)際操作一下剛剛學(xué)的Linux的磁盤(pán)管理命令。
輸入命令 cfdisk /dev/sda ,進(jìn)入到cfdisk分區(qū)工具界面:
將/dev/sda1格式化為 Ext4格式 ,命令為 mkfs -t ext4 /dev/sda1 ,同樣適用 Ext2格式 mkfs -t ext2 /dev/sda1 、 Ext3格式 mkfs -t ext3 /dev/sda1 。
使用命令 mkfs -t ntfs /dev/sda2 想將/dev/sda2格式化為 ntfs格式 ,但是會(huì)報(bào)錯(cuò): mkfs: failed to execute mkfs.ntfs: No such file or directory 。解決方法為:需要安裝 apt-get install ntfsprogs ,但是目前還是會(huì)報(bào)錯(cuò) E: Package 'ntfsprogs' has no installation candidate
命令 mkfs -t vfat /dev/sda3 或者 mkfs -t fat /dev/sda3 或者 mkfs -t msdos /dev/sda3 。vfat 是 fat 的擴(kuò)展,支持長(zhǎng)文件名,mkfs.fat和mkfs.vfat 本質(zhì)上是同個(gè)工具,生成的文件系統(tǒng)沒(méi)區(qū)別是因?yàn)?vfat 和 fat-32 在實(shí)現(xiàn)上是沒(méi)區(qū)別的,只是 vfat 通過(guò) fat-32 中的一些隱藏路徑表示長(zhǎng)文件名,而在 fat-32 中這些隱藏路徑會(huì)當(dāng)成是空的。
使用命令 mount [options] source directory 即可。首先需要建立掛載點(diǎn)(即一個(gè)文件夾) mkdir /mnt/part1 ,然后將一個(gè)分區(qū)掛載在這個(gè)掛載點(diǎn)上 mount /dev/sda1 /mnt/part1 。使用 df -h 查看掛載情況
當(dāng)設(shè)備關(guān)機(jī)前,系統(tǒng)會(huì)自動(dòng)卸載掛載的分區(qū),因此手動(dòng)掛載在下一次開(kāi)機(jī)的時(shí)候有需要重新掛載。要實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)掛載磁盤(pán),需要在/etc/fstab文件中添加掛載信息。
命令: umount [options] source | directory
之前在樹(shù)莓派4b上點(diǎn)亮了OHOS3.0,不過(guò)內(nèi)核是用tftp拉取的,根文件系統(tǒng)掛在了NFS上,拔了網(wǎng)線就無(wú)法啟動(dòng)。當(dāng)然這么操作只是為了方便調(diào)試,而最終需要的是一個(gè)可以燒錄到TF卡上的img鏡像文件。這就需要將所有調(diào)試好的內(nèi)容添加到OHOS3.0的編譯框架,本以為是很簡(jiǎn)單的事情,好家伙,整了這么久,感覺(jué)添加編譯框架比移植本身更復(fù)雜。于是我整理了添加樹(shù)莓派單板到編譯框架的內(nèi)容,希望對(duì)各位有所幫助,為大家避坑。
主要參考 hisilicon build組件倉(cāng),添加一個(gè)products編譯組件,這個(gè)組件是在產(chǎn)品配置文件中指定的。比如
productdefinecommonproductsRPI4B.json
其他部分參考Hi3516,但是其中2條,指定單板組件路徑,并添加組件。如果刪除這兩條,將不能編譯內(nèi)核,只生成OHOS的文件系統(tǒng)。
接下來(lái)在device目錄下,新建一個(gè)raspberrypi編譯組件文件夾,并添加 ohos.build 文件。和前面產(chǎn)品配置文件中的設(shè)置對(duì)應(yīng)起來(lái)了。
deviceraspberrypibuildohos.build
新建 deviceraspberrypibuildBUILD.gn 當(dāng)然每個(gè)廠家不可能只有1個(gè)板子,如果有其他單板就在這里指定,比如樹(shù)莓派2B、3B等
既然前面指定了rpi4b的編譯配置組件,那么就在 deviceraspberrypi 新建一個(gè) rpi4b 的目錄,可以參考 hi3516dv300 build組件
deviceraspberrypirpi4bBUILD.gn
至此一個(gè)rpi4b build組件就添加到OHOS3.0的編譯框架了,之后相關(guān)內(nèi)容添加到這個(gè)文件夾下就可以了。
接下來(lái)分析下目前移植了樹(shù)莓派4B的哪些內(nèi)容,如何將這些內(nèi)容編譯進(jìn)OHOS3.0。
關(guān)于補(bǔ)丁可以參考 Patch組件,可以得知內(nèi)核編譯由kernel.mk來(lái)執(zhí)行
kernellinuxbuildkernel.mk
所以補(bǔ)丁文件需要放到正確的路徑下,以正確的名字命名就可以patch到內(nèi)核。
hdf.patch補(bǔ)丁文件,現(xiàn)在還沒(méi)有移植HDF相關(guān)內(nèi)容,所以可以先使用Hi3516的
rpi4b.patch補(bǔ)丁文件,使用樹(shù)莓派的官方鏡像,
kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig
內(nèi)核配置文件目前已知的需要開(kāi)啟下面內(nèi)容,但是肯定不止這些,以后會(huì)繼續(xù)更新
Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。VideoCore IV 驅(qū)動(dòng)程序是 VC4,VideoCore VI 驅(qū)動(dòng)程序的 V3D。內(nèi)核已經(jīng)提供驅(qū)動(dòng),參考rpi4b_standard_defconfig將驅(qū)動(dòng)直接編入到內(nèi)核。
同時(shí)需要在config.txt中開(kāi)啟設(shè)置
OHOS中修改weston的配置文件,指定顯示驅(qū)動(dòng)
systemetcweston.ini
具體思路就是先查找設(shè)備號(hào),根據(jù)設(shè)備號(hào)找到驅(qū)動(dòng)程序。
前面內(nèi)核配置的時(shí)候rpi4b_standard_defconfig中已經(jīng)將觸摸驅(qū)動(dòng)編入內(nèi)核,所以后面不需要在init加載模塊了,修改下eudev的配置文件即可。
third_partyeudevrules.d ouchscreen.rules
正常情況下內(nèi)核是由uboot進(jìn)行引導(dǎo)的,而且OHOS默認(rèn)生成uImage。但是樹(shù)莓派自帶BootLoader,雖然可以先用樹(shù)莓派自帶的BootLoader啟動(dòng)uboot,再用uboot加載uImage,但是這樣會(huì)比較麻煩,而且會(huì)增加啟動(dòng)時(shí)間。不過(guò)目前 zImage是寫(xiě)死在kernel.mk中的,沒(méi)辦法改下編譯腳本把。
kernellinuxbuildkernel.mk 將 uImage 改為 zImage modules dtbs
kernellinuxbuildbuild_kernel.sh
kernellinuxbuildBUILD.gn
kernellinuxbuildkernel_module_build.sh
這里內(nèi)核編譯會(huì)依賴product_path="vendor/$product_company/$product_name"下的hdf.hcs文件,得先新建一個(gè)應(yīng)付下,不然會(huì)報(bào)下面這個(gè)錯(cuò)誤。
ninja: error: '../../vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs', needed by 'gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb', missing and no known rule to make it
新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs
對(duì)于鏡像燒錄,Hi3516會(huì)將uImage、system.img、vendor.img等鏡像燒寫(xiě)到emmc,但是樹(shù)莓派使用TF卡啟動(dòng),所以需要對(duì)TF卡進(jìn)行分區(qū),然后復(fù)制對(duì)應(yīng)的內(nèi)容到各個(gè)分區(qū)。首先制作樹(shù)莓派boot目錄,這個(gè)用來(lái)目錄存放樹(shù)莓派設(shè)備樹(shù)、config.txt、cmdline.txt、內(nèi)核鏡像等信息。寫(xiě)一個(gè)簡(jiǎn)單的mkboot.py腳本來(lái)實(shí)現(xiàn)這個(gè)功能,位置在碼倉(cāng)rpi4bdeviceraspberrypiimagesmkboot.py將會(huì)生成boot.img。
為了方便燒錄,需要將boot.img、system.img、updater.img、vendor.img、userdata.img合并成一個(gè)rpi4b.img。還是寫(xiě)一個(gè)簡(jiǎn)單的腳本來(lái)處理這個(gè)步驟rpi4bdeviceraspberrypiimagesmkboot.py。
不過(guò)有個(gè)問(wèn)題,主分區(qū)只支持4個(gè),所以u(píng)pdater.img暫時(shí)先不合并了,這個(gè)問(wèn)題等以后再來(lái)處理。
最后將會(huì)得到一個(gè)rpi4b.img的鏡像文件,將這個(gè)文件燒錄到SD卡就可以了。
Linux:可以使用dd命令
windows:使用Win32 Disk Imager工具燒錄即可。
到這里總算是跑通了一個(gè)完整的添加新單板的流程,只不過(guò)目前只適配了顯示和觸摸。接下來(lái)打算嘗試HDF或者distributed部分。
可以使用uname -a命令查看linux版本,也可使用lsb_release -a命令查看。
如果解決了您的問(wèn)題,請(qǐng)采納
昨天在寫(xiě)關(guān)于linux設(shè)置腳本開(kāi)機(jī)啟動(dòng)的文章時(shí),有個(gè)疑問(wèn)就是開(kāi)機(jī)時(shí)怎么確認(rèn)運(yùn)行級(jí)別,然后遍歷執(zhí)行/etc/rcN.d/目錄下的所有服務(wù)程序。帶著疑問(wèn), 在前人的基礎(chǔ)上 學(xué)習(xí)總結(jié)一下linux系統(tǒng)初始化的工作的內(nèi)容,現(xiàn)在樹(shù)莓派4B上展示出來(lái)。
1、加載內(nèi)核
當(dāng)計(jì)算機(jī)打開(kāi)電源后,首先是BIOS開(kāi)機(jī)自檢,按照BIOS中設(shè)置的啟動(dòng)設(shè)備(通常是硬盤(pán))來(lái)啟動(dòng)。操作系統(tǒng)接管硬件以后,首先讀入 /boot 目錄下的內(nèi)核文件。樹(shù)莓派4B的內(nèi)核是Raspbian GNU/Linux 10 (buster),基于Debian。
2、初始化進(jìn)程init
內(nèi)核文件加載以后,運(yùn)行第一個(gè)程序init,它的作用是初始化系統(tǒng)環(huán)境。init位于目錄/sbin,進(jìn)程號(hào)PID為1,即1號(hào)進(jìn)程,其他所有進(jìn)程都由init衍生,是init的子進(jìn)程。
同時(shí)還有個(gè)0號(hào)進(jìn)程,idle進(jìn)程,在系統(tǒng)初始化時(shí)由內(nèi)核kernel自身從無(wú)到有創(chuàng)建,通過(guò)調(diào)用kernel_thread創(chuàng)建一個(gè)內(nèi)核線程去執(zhí)行init函數(shù),0號(hào)進(jìn)程創(chuàng)建1號(hào)進(jìn)程。
3、運(yùn)行級(jí)別
具體介紹請(qǐng)參考筆者的文章-Linux運(yùn)行級(jí)別簡(jiǎn)介? ,但是開(kāi)機(jī)時(shí)是怎么確定運(yùn)行級(jí)別的呢?
init進(jìn)程首先讀取文件 /etc/inittab,它是運(yùn)行級(jí)別的設(shè)置文件。但是各個(gè)發(fā)行版不太一樣,init的配置文件也不一樣,有可能使用/etc/event.d里面的配置文件,最新版的改用為/etc/init目錄。
4、開(kāi)機(jī)啟動(dòng)程序
具體詳情請(qǐng)參考文章-linux中/etc/init.d設(shè)置開(kāi)機(jī)啟動(dòng) ,確定運(yùn)行級(jí)別后,執(zhí)行rcN.d目錄下的文件,這些鏈接文件是連接到init.d目錄下的程序。init進(jìn)程逐一加載開(kāi)機(jī)啟動(dòng)程序,其實(shí)就是運(yùn)行這個(gè)目錄里的啟動(dòng)腳本。
比如運(yùn)行級(jí)別為5(圖形化多用戶)時(shí)啟動(dòng)的程序:
5、用戶登錄
開(kāi)機(jī)啟動(dòng)程序加載完畢以后用戶登錄。用戶的登錄方式有三種:
命令行登錄:init進(jìn)程調(diào)用getty程序。
ssh登錄:init進(jìn)程調(diào)用sshd程序。
圖形界面登錄:init進(jìn)程調(diào)用顯示管理器,Gnome圖形界面對(duì)應(yīng)的顯示管理器為gdm。
6?、login shell
默認(rèn)shell時(shí)bash,命令行界面,讓用戶可以直接與操作系統(tǒng)對(duì)話。讀取環(huán)境變量,具體請(qǐng)參考筆者文章-Linux環(huán)境變量的設(shè)置。
ome Linux上的我的文檔,包含用戶名命名的文件夾
/lib 各種應(yīng)用需要的代碼庫(kù)
/lost+found 一般情況下是空的,當(dāng)系統(tǒng)非法關(guān)機(jī)后,這里就存放了一些文件
/media 放置可移動(dòng)存儲(chǔ)驅(qū)動(dòng)器,比如USB和CD
/mnt 用來(lái)手動(dòng)掛在外部硬件驅(qū)動(dòng)器或存儲(chǔ)設(shè)備
/opt 可選軟件文件夾,非系統(tǒng)部分的軟件將會(huì)放置在這里
/sbin 放置超級(jí)用戶使用的系統(tǒng)管理命令
/sys 放置操作系統(tǒng)文件
/tmp 放置臨時(shí)文件
/usr 放置用戶使用的程序
/var 虛擬文件,用于程序保存數(shù)據(jù)
2
樹(shù)莓派常用命令:
網(wǎng)頁(yè)名稱:樹(shù)莓派4Linux命令 樹(shù)莓派4b裝linux
文章URL:http://redsoil1982.com.cn/article46/docpohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、微信小程序、外貿(mào)建站、動(dòng)態(tài)網(wǎng)站、企業(yè)建站、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)