這里每天回答三個sylixos入門問題。
uj5u.com熱心網友回復:
1.什么是作業系統2.SylixOS與其它開源系統有何區別(linux,ucos=)
3.什么是shell
uj5u.com熱心網友回復:
4.安裝ide和作業環境時,安裝路徑及其它需要注意什么,有什么容易出現的問題5.創建base工程時應如何選型(Toolchain ,Debug level ,cpu type ,fpu type)
6.編譯helloworld工程后,部署的意義,部署引數配置?
uj5u.com熱心網友回復:
1.什么是作業系統?
計算機誕生初期肯定是沒有作業系統的,隨著軟體工程越來越龐大越來越復雜,且不同計算機系統間,有很大一部分代碼是相同或相似的,這部分計算機軟體中通用性的框架性的支撐性的代碼其實就是計算機作業系統。計算機軟體總體分3個層次,驅動層,系統層和應用層。其中驅動層關心的是對具體計算機硬體的適配,應用層是關心具體應用情景和業務邏輯,而系統層最主要的就是作業系統,關系的是計算機的整體框架,包括提供統一的驅動模型,應用支撐介面,存盤網路等資源的體系支持等。
2..SylixOS與其它開源系統有何區別(linux,ucos=)
sylixos是國產開源的大型實時作業系統。
Linux是當前全球最大的開源的通用作業系統,其功能和技術生態都遠強于SylixOS,但它天生就是為通用計算機設計的所以在實時性方面要差于sylixos。
usos,freertos等在單片機上常見的作業系統是小型或微型實時系統。他們體積很小,實時性也很高,但功能或組件相比于sylixos太少,不能支持大型的計算機應用。
從代碼體量或支持的功能上來講,假如裸機框架是步行,那usos,freertos就是騎自行車,sylixos是開汽車,Linux則是火車。
3.什么是shell
shell簡單來講就是命令列,就是人與作業系統互動的通道或界面。
uj5u.com熱心網友回復:
4.安裝ide和作業環境時,安裝路徑及其它需要注意什么,有什么容易出現的問題?
安裝IDE時要選擇默認位置(C盤根目錄)安裝,如果修改為其他目錄可能會造成注冊、啟動等例外。
5.創建base工程時應如何選型(Toolchain ,Debug level ,cpu type ,fpu type)
根據目標硬體的體系結構和具體CPU型號選擇(查看CPU資料手冊)。開發初期一般選擇debug模式,開發完成調優階段要改為release模式。base和bsp工程一般沒有浮點計算,所以選擇不使用浮點或硬體浮點。app工程根據是否使用浮點選擇CPU對應的浮點單元型別。
6.編譯helloworld工程后,部署的意義,部署引數配置?
app編譯完成后需要部署到目標板才能運行。部署就是通過某種方式把生成的APP可執行檔案拷貝到目標系統的指定檔案系統路徑下。一般是使用tfp方式,可以使用第三方ftp工具,如fillzilla等,也可以是喲IDE自帶的ftp工具。使用IDE自帶ftp工具需要創建配置目標設備,配置好后可以按快捷鍵“Alt+D”快速部署。

也可以使用串口xmodem,U盤拷貝等方式部署。
uj5u.com熱心網友回復:
7.[ld]Warning: Kernel module /lib/modules/mod_demo.ko OS-version 1.12.5, is not compatible with current SylixOS version.Re-build this module with current SylixOS version, may solve this problem.
[ld]Load file "/lib/modules/mod_demo.ko" error Module version not fix to current OS!如何解決
uj5u.com熱心網友回復:
8.遇到ip沖突時應該怎么辦pc端,虛擬機端ip應如何設定
9.如何同時將程式部署到多臺設備上
uj5u.com熱心網友回復:
這是一個版本不匹配的問題。
在sylixos中,要求內核模塊編譯時基于的內核版本要等于或遭遇運行時系統的內核版本,而動態庫和應用程式則對新舊運行時系統的內核版本都是兼容的。
解決辦法就是讓版本匹配。
1.基于行時系統的內核版本重新編譯內核模塊。
2.使用最新版內核編譯系統鏡像。
uj5u.com熱心網友回復:
8.遇到ip沖突時應該怎么辦pc端,虛擬機端ip應如何設定。
同一局域網內靜態分配的IP地址肯定是不能相同的,相同則會造成IP沖突。可以修改PC端IP也可以修改設備端IP。
設備端IP地址可以用ifconfig命令修改,格式為 ifconfig en0 inet 192.168.1.100 。ifconfig修改的網卡引數只能本次有效,復位后還是之前的設定。
想使得修改一直有效,可以通過修改/etc/ifparam.ini來實作,檔案格式如下:

也可以將ifconfig命令添加到啟動腳本檔案(/etc/startup.sh)中,使得系統每次啟動都用ifconfig命令重新配置下IP地址。
9.如何同時將程式部署到多臺設備上。
程式部署一般都是用ftp進行,IDE自帶和第三方ftp工具一般都是針對一臺設備進行檔案傳輸的。所以多臺設備需要多次操作才能完成。
如果是固定有規律的部署特定檔案,可以使用腳本或批處理編程實作一次操作部署多臺設備的效果。
uj5u.com熱心網友回復:
1.如何更改網路配置臨時\長期2.如何添加系統啟動腳本
3.如何查看所有執行緒
uj5u.com熱心網友回復:
1.如何更改網路配置臨時\長期
ifconfig命令可以臨時更改網路配置,指令執行后立即生效,重啟后無效。
命令示例:ifconfig en0 inet 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1
通過vi命令修改/etc/ifparam.ini檔案可以修改網路配置,長期有效,修改后不會立即生效,下次起動后才有效。

2.如何添加系統啟動腳本
sylixos啟動腳本為/etc/startup.sh,系統啟動時會自動執行該腳本,啟動程序中按n鍵可以取消啟動腳本執行。
可以通過vi命令來創建或修改該檔案,也可以在電腦上創建修改好該檔案后通過ftp或U盤拷貝等方式,復制檔案到etc目錄下。
3.如何查看所有執行緒
ts和tp命令可以查看系統執行緒狀態

ss命令可以查看執行緒堆疊使用百分比

uj5u.com熱心網友回復:
1.vi命令編輯器幾種模式,怎么使用2.uboot是什么模式
3.什么是固化
uj5u.com熱心網友回復:
1.vi命令編輯器幾種模式,怎么使用
sylixos 命令列行支持vi編輯器,vi編輯器是命令列下最常用的編輯器,有三個模式命令列模式,插入模式,底行模式。vi命令的詳細的用法可以參見各種教程,下面列出一些網上的vi使用教程:
https://www.runoob.com/linux/linux-vim.html
https://blog.csdn.net/cyl101816/article/details/82026678
很多情況下vi命令是sylixos下唯一可以進行檔案創建和修改的方法,所以一定要學會使用vi命令,前期只要能進行檔案的創建,保存,內容的洗掉修改就可,其他功能可以慢慢再學。
2.uboot是什么模式
uboot是一種常用的功能強大的BootLoader,BootLoader是作業系統運行之前先運行的一段程式,用于初始化硬體,加載作業系統,開發除錯等功能。
3.什么是固化
固化程式簡單來講就是讓程式能開機自動正常運行。在程式開發階段,為了提高開發測驗效率,編譯后的程式鏡像并不存盤到磁盤或flash等存盤器中,而是直接加載到記憶體運行除錯,待開發階段結束,就需要固化程式,使得系統復位后能正常運行。
uj5u.com熱心網友回復:
1.操作gpio時,操作哪個gpio,如何標識2.需要gpio輸出的電平,如何設定電平狀態
3.gpio操作結束,為什么要釋放該設備,如何釋放
uj5u.com熱心網友回復:
1.要大量使用gpio設備時,怎么宣告最方便,要注意什么2.要使用gpio引腳運行時出現未知錯誤,如何檢查,怎么處理
3.延時怎么操作
uj5u.com熱心網友回復:
1.操作gpio時,操作哪個gpio,如何標識
對于應用層來說,GPIO就是 /dev/gpiofd 目錄下的某個設備檔案,通過標準檔案函式就能夠操作。鑒于GPIO使用的一些固有特點,以及為了簡化介面,SylixOS又進一步封裝標準檔案函式得到三個簡潔的GPIO操作函式(gpiofd,gpiofd_read, gpiofd_write),檔案關閉依舊使用close函式。
使用gpiofd介面打開gpio設備檔案時用的是gpio編號而不是檔案名。至于編號和實際gpio如何對應是有具體的gpio驅動所決定的。為了讓gpio編號直觀易懂可以通過宏定義的方法來標識。
2.需要gpio輸出的電平,如何設定電平狀態
使用gpiofd打開時,可以通過gpio_flags標準位設定打開時的默認輸出狀態,必須以輸出模式打開設備。
GPIO_FLAG_OUT_INIT_LOW --- 設定GPIO為輸出功能,同時初始化輸出低電平
GPIO_FLAG_OUT_INIT_HIGH --- 設定GPIO為輸出功能,同時初始化輸出高電平
gpio打開后可以通過gpiofd_write函式來控制電平輸出,value為真輸出高電平,為假輸出低電平。
3.gpio操作結束,為什么要釋放該設備,如何釋放。
gpio打開時會占用一些軟硬體資源,當不使用時,應當釋放。釋放后的軟硬體資源才可以被系統再利用。比如關閉某gpio后,可能會關閉gpio的控制器的時鐘信號以降低不必要的功耗,釋放芯片多功能引腳以使得該引腳可以用于其他外設,釋放一些自旋鎖,信號量等系統資源。
應用層通過對檔案描述符呼叫close函式即可釋放gpio。
詳見《在應用層使用GPIO》https://blog.csdn.net/ScilogyHunter/article/details/100108086
uj5u.com熱心網友回復:
1.要大量使用gpio設備時,怎么宣告最方便,要注意什么
同時使用大量gpio設備時,如果應用情景中的gpio排序和驅動中的gpio序號有線性邏輯關系,則可以直接使用gpio序號對gpio進行索引。
如果沒有線性關系,是一組雜亂的gpio,則可以將gpio序號定義到一個陣列中,陣列中的索引順序設定成和應用需要一致。
2..要使用gpio引腳運行時出現未知錯誤,如何檢查,怎么處理
檢查呼叫的gpio序號與實際使用的是否一致,是否和其他外設沖突公用了某引腳。gpio的輸入輸出中斷模式是否與電路匹配等。
3.延時怎么操作
sylixos下需要延時操作時,可以使用POSIX標準介面sleep(x)或usleep(x)
uj5u.com熱心網友回復:
1.點亮板子上的led有幾種方式2.在SilixOS上點亮led與裸機有何區別
3.led的各種樣式可以通過什么實作
uj5u.com熱心網友回復:
1.字符設備都有什么,字符設備驅動框架是什么2.驅動模塊如何裝載與卸載
3.字符設備的注冊與注銷如何實作
uj5u.com熱心網友回復:
1.點亮板子上的led有幾種方式
點亮LED,其實就是操作gpio。在驅動層,sylixos提供了一組操作gpio的api函式;在應用層sylixos把gpio封裝成了一個設備檔案們可以按照檔案訪問的方式操作gpio。
2.在SilixOS上點亮led與裸機有何區別
裸機操作LED關注點是gpio的暫存器,是比較偏向硬體的思維。sylixos或其他大型作業系統,會把設備封裝成檔案或物件,是一種更抽象更通用的思維。
3.led的各種樣式可以通過什么實作
這個就是具體需求具體思維了,沒有固定的套路。但原則上是盡可能把復雜度差異化從演算法或程序轉變為數值的不同。
uj5u.com熱心網友回復:
1.字符設備都有什么
字符設備是對很多簡單控制或通信設備的抽象,是一個設備大類,如gpio,串口一般都封裝為字符設備。字符設備的操作一般就是讀取或寫入n位元組的資料。還有一種快設備,一般是一個存盤設備,如e2prom,flash,磁盤等。塊設備的主要操作是從指定位置讀取或寫入若干位元組。
2.驅動模塊如何裝載與卸載
驅動可以直接和內核一起編譯到系統鏡像中,也可以通過內核模塊的方式單獨編譯、加載、運行。通過內核模塊來實作更為靈活,易開發,易修改,易維護。內核模塊通過insmod命令裝在,通過rmmod命令卸載。
3.字符設備的注冊與注銷如何實作
字符設備可以通過API_IosDevAdd或API_IosDevAddEx函式介面注冊,通過API_IosDevDelete介面注銷。
uj5u.com熱心網友回復:
1.static作用,什么時候需要注意2.const~
3.定義全域變數要注意什么
uj5u.com熱心網友回復:
1.static作用,什么時候需要注意
static有三個作用,1.修飾全域變數,使得該全域變數在本.c檔案中私有。2.修飾函式,使得該函式在本.c檔案中私有。3.修飾區域變數,使得該變數為靜態變數,會連接到data段或bss段,只在系統或模塊加載時初始化一次,每次訪問時地址不變。
如果static修飾的全域變數或函式位于頭檔案中,那每個包含該頭檔案.c檔案都會具備這樣一個全域變數或函式,且這多個同名全域變數或函式編譯連接時不會報錯。
2.const
const用于告訴編譯器,所修飾的變數只讀。
3.定義全域變數要注意什么
1>盡可能不用或少用全域變數
2>盡可能用static修飾,令其只能在本源檔案中訪問,縮小其呼叫范圍。
3>多個相關的全域變數,最好定義一個結構體來整體管理。
4>變數名最好以"_G_"開頭,以表明其實全域變數。
uj5u.com熱心網友回復:
1.i2c驅動分為幾部分,兩部分框架有什么區別2.i2c完整的一次通信都做了什么
3.i2c如何掛載多個設備,怎么處理執行緒
uj5u.com熱心網友回復:
1.i2c驅動分為幾部分,兩部分框架有什么區別
i2c驅動分總線驅動(或交配接器驅動)和子設備驅動。總線驅動關心的是如何操作i2c總線控制器,使得SCL和SDA上產生和決議出合適的電平時序。子設備驅動關心的是基于i2c總線的時序如何控制和獲取外設芯片的狀態。
2.i2c完整的一次通信都做了什么
i2c以半雙工同步串行方式通信,通信以幀為單位。通信幀以起始信號開始,然后是多個資料和應答,最后以停止信號結束。具體通信特性見《I2C總線基礎知識》
3.i2c如何掛載多個設備,怎么處理執行緒
sylxios下撰寫i2c子設備驅動需要基于i2c總線配接器創建i2c子設備(通過呼叫API_I2cDeviceCreate函式實作),i2c子設備地址不能沖突,基于i2c子設備物件就可以進行i2c收發傳輸了(通過呼叫API_I2cDeviceTransfer函式實作)。i2c總線可以同時掛接多個子設備,但與多個子設備間不能同時使用,否則會造成通信沖突混亂。為了避免通信沖突,呼叫內核API_I2cDeviceTransfer介面時,內部已做了信號量保護,保證一次i2c通信完成之前會阻塞其他通信請求。
uj5u.com熱心網友回復:
ssize_t是什么型別的sylixos系統如何對錯誤進行宣告
sylixos怎么設定中斷觸發模式
uj5u.com熱心網友回復:
1.ssize_t是什么型別的
ssize_t和size_t都是處理器體系結構相關的typedef型別。對于32位處理器它們是32位的,對于64位處理器它們是64位的。其中ssize_t是有符號型別,size_t是無符號型別,ssize_t也就是signed版的size_t。
typedef unsigned long size_t;
typedef long ssize_t;
size_t一般用來表示一種計數,比如有多少東西被拷貝等。例如:sizeof運算子的結果型別是size_t,該型別保證能容納實作所建立的最大物件的位元組大小。 它的意義大致是“適于計量記憶體中可容納的資料專案個數的無符號整數型別”。所以,它在陣列下標和記憶體管理函式之類的地方廣泛使用。
而ssize_t這個資料型別一般用來表示可以被執行讀寫操作的資料塊的大小,它和size_t類似,但必需是signed意即:它表示的是signed size_t型別的。
2.sylixos系統如何對錯誤進行宣告?
sylixos和其他類Unix作業系統一樣通過回傳錯誤號來獲取運行狀態,錯誤號通過宏定義數字來表示。一般的函式回傳一個有符號數,為正表示運行正常且回傳結果,為0表示執行正常,為負表示執行失敗,數值既是錯誤號,表示不同的錯誤原因。
3.sylixos怎么設定中斷觸發模式?
這個問題不是很明確。如果是gpio中斷,則可以設定中斷模式為高電平、低電平,上升沿,下降沿,雙邊沿五中觸發模式,在呼叫api時也有回應的宏定義來表示。如果是其他外設的中斷觸發模式,一般都會有一個中斷屏蔽暫存器和中斷狀態暫存器,各個位相互對應,每個為控制一種觸發條件的使能和狀態,
uj5u.com熱心網友回復:
1.回呼函式的用途作用2.SylixOS系統spi總線的驅動框架
3.SylixOS系統spi設備的驅動框架
uj5u.com熱心網友回復:
1.回呼函式的用途作用
回呼函式就是一個通過函式指標呼叫的函式。如果你把函式的指標(地址)作為引數傳遞給另一個函式,當這個指標被用來呼叫其所指向的函式時,我們就說這是回呼函式。回呼函式不是由該函式的實作方直接呼叫,而是在特定的事件或條件發生時由另外的一方呼叫的,用于對該事件或條件進行回應。
因為可以把呼叫者與被呼叫者分開,所以呼叫者不關心誰是被呼叫者。它只需知道存在一個具有特定原型和限制條件的被呼叫函式。簡而言之,回呼函式就是允許用戶把需要呼叫的函式的指標作為引數傳遞給一個函式,以便該函式在處理相似事件的時候可以靈活的使用不同的方法。
2.SylixOS系統spi總線的驅動框架
這個需要單獨寫一篇博客來介紹。
3.SylixOS系統spi設備的驅動框架
這個需要單獨寫一篇博客來介紹。
uj5u.com熱心網友回復:
1.spi在處理有無fifo存盤器的外設區別2.當spi通信時不用的資料怎么處理
3.C語言中怎么實作類的概念,使用時注意什么
uj5u.com熱心網友回復:
1.spi在處理有無fifo存盤器的外設區別
無FIFO時沒傳輸一個位元組都要等待上一個位元組完成。有FIFO時,可以一直填充發送FIFO直到FIFO滿,待發送FIFO完成,可以直接從接收FIFO讀取多個位元組的接收資料。
2.當spi通信時不用的資料怎么處理
這個問題的表示不夠清晰明確。應用層呼叫spi配接器時,是通過訊息陣列進行操作的,某一個訊息一般只發送或只接收。只發送時,如果應用層提供的輸入快取為空,驅動中要根據硬體特性忽略讀操作或讀取到一個臨時快取丟棄資料。只接收時,也是需要發送的,但應用層提供的發送快取可能為空,則可以固定發送某個數值,一般發送0;
3.C語言中怎么實作類的概念,使用時注意什么
C語言也是可以進行面向物件編程的。C語言面向物件的方法就是使用結構體來構造類和物件,其中結構體型別為類,分配了記憶體進件的結構體資料為物件。結構體中數值成員充當資料屬性,函式指標充當方法屬性,結構體充當成員物件。一個物件具體需要哪些成員或屬性又具體問題來確定。一個類的子類就是一個頭部成員型別和偏移完全和自己一樣的結構體,而后面不同的成員就是子類的特殊屬性擴展。一個類或物件可以強壯為他的符類,按照父類的邏輯進行操作,父類則不能按照子類的邏輯行程操作。
uj5u.com熱心網友回復:
1.作業系統中信號量是什么,有什么用2.信號量的構成
3.什么是原子操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/12352.html
標籤:驅動開發/核心開發
下一篇:CAN總線網路拓撲和終端電阻
