小白一個,又遇到問題,在profile檔案中添加環境變數出錯,直接導致進入不了系統。網上搜了一下遇到這種問題的還不少,呵呵。解決辦法也知道了。需要先進入命令列模式,在開機畫面出來時。按a進入核心模式,然後空格,數字3,斷行符號。記住必須有空格,開始我沒有空格半天進入不了還不知道什麼原因。登陸進命令列介面後,然後root使用者登陸。這時我由於profile出錯的問題,導致vi命令也用不了。這時就要使用絕對路徑了。鍵入/bin/vi /etc/profile
前段時間鼓搗Linux,學習了一些基礎性的東西,比如常用命令。現在準備開始學習Linux環境下的編程。重視基礎,先學習資料結構。參考教材是《嵌入式系統軟體設計中的資料結構》,這是嵌入式系統軟體設計基礎叢書中的一本,個人認為不錯哈。結合了ucos中用到的資料結構例子來講。而且有C語言的實現,不是虛擬碼。
鏈表也是線性表的一種,與順序表不同的是,它在記憶體中不是連續存放的。在C語言中,鏈表是通過指標相關實現的。而單鏈表是鏈表的其中一種,關於單鏈表就是其節點中有資料域和只有一個指向下個節點的指標域。建立單鏈表的方法有兩種,分別是頭插法和尾插法。所謂頭插法,就是按節點的逆序方法逐漸將結點插入到鏈表的頭部。反之尾插法就是按節點的順序逐漸將節點插入到鏈表的尾部。相對來說,頭插法要比尾插法演算法簡單,但是最後產生的鏈表是逆序的,即第一個輸入的節點實際是鏈表的最後一個節點。而為了習慣,通常用尾插法來建立鏈表。
建立鏈表的方法採用尾插法,且是改進版的尾插法,即添加了一個輔助前端節點。下面的代碼是對插入、刪除、尋找的一個整體操作。其中尋找分為按值和按位置尋找。刪除和插入都是按給定位置操作。#include <stdio.h>#include <stdlib.h>typedef struct list{char data;struct list *next;}linklist;linklist *CreateLinklist_End();//尾插法建立鏈表linklist
所謂迴圈鏈表就是尾結點與頭結點相連的鏈表,整個鏈表形成一個環。而對於迴圈鏈表的插入與刪除運算,基本上與單鏈表相同,只是在判斷鏈表是否結束有所不同。下面的代碼操作實現了兩個迴圈單鏈表的合并。且核心代碼不多,主要是分別找到迴圈單鏈表的尾結點再進行後續操作。#include <stdio.h>#include <stdlib.h>typedef struct list{char data;struct list *next;}linklist;linklist
雙鏈表的含義就是鏈表結構體中有兩個指標域,一個指向前一個結點,另一個指向後一個結點。下面的代碼是對迴圈雙鏈表的操作練習。#include <stdio.h>#include <stdlib.h>typedef struct list{char data;struct list *prior;struct list *next;}dlinklist;dlinklist *CreateLinklist_End();//尾插法建立迴圈雙鏈表void
去年就買了個STM32的板子回來,每次都是斷斷續續的學習,感覺沒學到個撒,沒多久就忘了,再學又感覺是重新開始,做了很多重複的事情。這樣導致了惡性迴圈。唉,現在時間充足了。前段時間本想深入學習elua,順便就學習了LPC1768,可是天殺的遇到各種linux下的不懂問題,也找不到解決辦法,遂放棄之,真心不甘,感覺對這個興趣蠻濃的,竟然只是看著官方文檔就津津有味。不能學習LPC1768,就計劃學習STM32,這次告訴自己要認真學,不能兩天打漁,三天曬網的來,而應該系統的學習。當然,基礎的東西也還是要
當你的eLua開發板上電時會發生下面的事情:平台初始化代碼被執行。這些代碼做一些低檔次的啟動工作,複製ROM到RAM,清空BSS地區,設定堆棧指標然後跳轉到main函數。main函數做的第一件事情就是調用特定平台的初始化函數(platform_int),此函數必須完全初始化平台然後返回一個值。這個值可以是PLATFORM_OK如果調用初始化成功的話,失敗的話會返回PLATFORM_ERR。如果返回PLATFORM_ERR,main函數會進入一個死迴圈。然後初始化剩下的系統,ROM檔案系統,XMO
幾天沒看資料結構了,今天重新開始了。 串是一種特殊的線性表,它的每個結點是一個字元,所以串也稱作字串。 關於串的操作主要有求串長,串複製,串聯接,求子串,串插入,串刪除,子串定位等。串的操作也是C語言筆試中常考的一部分。 下面的代碼實現了串的主要操作。#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20char *String_Create();//建立串int
ROM檔案系統ROM檔案系統(ROMFS)是一個由eLua構建的微型的,唯讀檔案系統,它與C庫整合在一起,所以你可以使用標準的POSIX(fopen/fclose/fwrite...)來操作它。它也可以直接通過Lua的io模組來控制。這個檔案系統中的檔案是eLua二進位鏡像中的一部分,所以鏡像構建以後它們不能被修改。因為同樣的原因,在鏡像構建後你不能增加或刪除鏡像檔案。ROMFS不支援子目錄。為了最大化的在不同平台上得以操作的靈活性,ROMFS與構建系統結合在一起。因此,當eLua運行在開發板上
從書上摘抄過來。哈夫曼樹是二叉樹的一個應用執行個體,它是一種變長碼。它的出現是為了提高資料存放區和資料通訊的效率,通常對資料進行壓縮編碼,對降低系統成本和功耗方面有意義。對哈夫曼樹的使用需要注意些地方。在變長碼中,機率高的成員使用短的代碼,這是提高效率的保證。為了解碼不出現混亂,每個短代碼都不能成為其他長代碼的開頭。這一點在解碼樹上表現為:解碼結果必須為樹葉,每片樹葉不能成為其他樹葉的中間結點。下面的代碼是哈夫曼解碼的一個演算法程式。typedef struct Node2{char
用虛擬機器玩linux,vmare tools也是必不可少的一種工具。把安裝教程記下來,免得以後忘記又網上查資料。如果你沒安裝Vmware tools的話,Vmware會自動提醒你安裝的。安裝完後,這是你會在案頭看見一個光碟片。以linux mint安裝為例:cd /media/xxx(xxx表示目前使用者名檔案夾)cd Vmwaretools 進入光碟片檔案夾cp vmware****.tar.gz /tmp 將光碟片裡的targz壓縮包複製到/tmp檔案夾中cd /tmp
FAT檔案系統關於eLua中FAT檔案系統的實現是使用了來自Elm
隊列是一種只允許在表的一端(稱為隊尾)進行插入,而在另一端(稱為隊頭)進行刪除的線性表,是線性表的一種特例。順序隊列是用數組結構來表示的。為了描述隊列的這種結構,我們需要兩個表明隊頭和隊尾的指標,規定隊頭指標指向隊列頭結點的前一個位置,而隊尾指標指向隊列的尾結點。而為什麼又會用到迴圈隊列呢,因為為了防止“假上溢”對空間造成的浪費。“假上溢”是這麼來的,先說“上溢”和“下溢”。下溢就是當空對時,如果再做出隊操作,則會產生“下溢”。當隊滿時,再做入對操作會產生“上溢”。但是,如果當前尾指標等於數組的
這個部分展示所有elua開發人員都應該注意的elua編程風格。規則如下:1.空格無處不在。例子如下(空格規則是為了增加程式的可讀性)。i = 3 (not i=3)a = ( a + 5 ) / 3for( i = 0; i < 10; i ++ ) ...if( ( i == 5 ) && ( a == 10 ) ) ...unsigned i = ( unsigned )p;void func( int arg1, const char* arg2 ) ...2.縮排:
隊列的儲存方式除了有順序隊列,還可以有鏈隊列這種形式。鏈隊列是採用鏈式結構儲存的隊列,類似單鏈表,但操作受限制,只允許在表頭刪除結點和在表尾插入結點。在鏈隊列中,除了有一個頭指標外,還要有一個尾指標。在隊頭還需要加一個頭結點,當隊列為空白時,頭指標與尾指標同時指向頭結點。為了與頭結點區分開,稱隊列的第一個結點(頭結點後面的第一個結點)為隊頭結點。下面的代碼就是對鏈隊列的一些操作,其中有個問題還讓我糾結了會兒。#include <stdio.h>#include <stdlib.
堆棧是一種只允許在表的一端(稱為棧頂)進行插入和刪除的線性表,而在表的另一端(稱為棧底)是不能進行操作的,也是線性表的一種特例。堆棧的順序儲存是用數組來是實現的。為了表示棧,我們需要一個棧頂指標top來指示棧頂位置。下面的代碼實現了對順序棧的相關操作。#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef struct{int data[MAXSIZE];int top;//棧頂指標}sqstack;
交叉編譯就是為了不同的硬體平台而在一個硬體平台上編譯器的過程。比如,在PC機上編譯eLua二進位鏡像檔案,但是使用此二進位檔案在eLua開發板上的過程就是交叉編譯。Lua也能交叉編譯。通過在PC機上交叉編譯Lua產生最終的二進位檔案運行在你的eLua開發板上你將獲得下面兩個重要的好處:速度:在eLua開發板上的Lua編譯器不得不編譯你的Lua原始碼。而交叉編譯的話只需執行你編譯後的二進位檔案。記憶體:如果你直接執行二進位檔案,因為編譯Lua為二進位檔案所以對記憶體浪費很少。但是如果你想直接在eL
堆棧也可以採用鏈式儲存結構,稱為鏈棧。鏈棧常採用單鏈表表示。其實現是將鏈表的表頭作為棧頂實現,這樣就不需要在單鏈表中增加頭結點,棧頂指標就是鏈表的頭指標。下面的代碼實現了鏈棧的相關操作,其中有個錯誤關於重複申請堆空間讓我鬱悶了會兒,不過後來找出來了。#include <stdio.h>#include <stdlib.h>typedef struct node{char data;struct node *next;}linkstack;linkstack *
文章目錄 移植相關結構