原创 (5)CMake入門筆記--CMake官網教程

五.添加生成的文件和生成器 在本節中,我們將展示如何將生成的源文件添加到應用程序的構建過程中。 對於此示例,我們將創建一個預先計算的平方根表,作爲構建過程的一部分,然後將該表編譯到我們的應用程序中。 爲此,我們首先需要一個生成表的程序。

原创 (1)從1開始寫一個操作系統

第一章 前言 偶然間使用到了RTX51-tiny做一些東西,它是keil自帶的51操作系統,以小巧佔用資源少著稱,這裏不細談它是如何實現的,反正是一個真正的基於時間片的多任務系統。 往往我們在使用單片機做一些東西的時候都比較喜歡前後臺的框

原创 (2)CMake入門筆記--CMake官網教程

二. 添加庫 現在我們將爲我們的項目添加一個庫。 該庫將包含我們自己的實現,用於計算數字的平方根。 然後,可執行文件可以使用此庫而不是編譯器提供的標準平方根函數。 在本教程中,我們將把庫放入一個名爲MathFunctions的子目錄中。

原创 (5)從1開始寫一個操作系統

第五章 這一張我們開始進行任務調度的相關實現,先從最簡單的任務調度開始,任務主動釋放cpu。 主動釋放CPU 我們需要先準備兩個任務,就是要進行這兩個任務之間的主動釋放,實現任務切換。 我們爲了觀察結果,這裏我們使用串口操作,需要把bsp

原创 (4)從1開始寫一個操作系統

第四章 任務就緒表 我們有任務之後爲了方便切換的時候判斷需要讀取那個任務的屬性進行比較,我們就需要任務就緒表來記錄哪個任務是就緒的,我們可以通過查表來找到這個就緒的任務。 由於就緒表記錄的狀態只有就緒和未就緒兩種,所以我們可以使用1位來表

原创 (1)CMake入門筆記--CMake官網教程

CMake官網提供的入門教程。 CMake官網教程地址:https://cmake.org/cmake-tutorial/ 一. 基本開始 1. 基本項目構建 最基本的項目是從源代碼文件生成的可執行文件。 對於簡單的項目,只需要兩三行CM

原创 (12)從1開始寫一個操作系統

第十二章 Shell移植 命令行外殼(shell),提供一套供用戶在命令行的操作接口,主要用於調試、查看系統信息。在大部分嵌入式系統中,一般開發調試都使用硬件調試器和printf日誌打印,在有些情況下,這兩種方式並不是那麼好用。比如對於多

原创 (9)從1開始寫一個操作系統

第九章 任務函數的補充 前面講的代碼基本已經把我們的內核全部都實現完了,有一些需要有的函數沒有在前面講到,在這一章我們統一補充一下,讓我們的內核更加完善。 讓出CPU 當存在同級優先級任務的時候,任務希望把CPU讓給其它同級優先級,擔憂不

原创 (2)從1開始寫一個操作系統

第二章 多任務的原理 在開始寫操作系統之前需要理解一個問題,一個cpu是如何做到“同時”做多個事情的,比如同一時間又亮燈又檢測按鍵又串口輸出。其實它不能,一個cpu在一個時間點只能執行一條指令,無法同時執行多個指令。但是從現象上看又確實是

原创 (3)從1開始寫一個操作系統

第三章 真正實現多任務前需要了解的寄存器知識 當我們在做中斷的時候會進行除了把PC入棧之外的動作,就是會把通用寄存器入棧,這是爲什麼呢?加入我們正在進行加法運算,使用了ACC寄存器,這時候進入了中斷,我們的中斷中也使用了ACC寄存器,當中

原创 (6)從1開始寫一個操作系統

第六章 任務優先級及任務狀態 到現在爲止我們其實已經實現了一些多任務的功能,而且我們也能從中總結出一些狀態,比如正在運行,睡眠,掛起,就緒。這些狀態都有他們特殊的邏輯,在之後我們還會設計支持時間片的方式,這時候我們只有就緒表就有些不夠用了

原创 Glib學習(23) IO通道 IO Channels

glib源碼下載:http://ftp.gnome.org/pub/gnome/sources/glib/ glib幫助文檔:https://developer.gnome.org/glib/ IO通道 - 可移植的支持使用文件,管道和套

原创 (11)從1開始寫一個操作系統

第十一章 小內存管理 因爲小內存的限制,不可能使用系統標準的malloc和free,這裏介紹3種小內存管理方法。 第一種就是預先申請一塊大內存。 然後使用這個內存來動態分配,並在分配時使用一個頭來做分配記錄。 在使用過程中會出現碎片,

原创 (7)從1開始寫一個操作系統

第七章 時間片概念 時間片輪轉調度是一種最古老,最簡單,最公平且使用最廣的算法。每個任務被分配一個時間段,稱作它的時間片,即該任務允許運行的時間。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個任務。如果任務在時間片結束前阻

原创 三、android編譯cmake工程

現在我們需要編譯我們自己的程序,我們自己的程序中使用了openssl的函數,這樣就形成了一個庫引用庫的過程,這個通了就基本都通了。 1.cmake版本問題 如果你使用的cmake版本在3.6.0以上就沒有這個問題,如果你使用的低於這個版本