原创 AM335x(TQ335x)學習筆記——使用dtb方式啓動內核

老式的u-boot使用ATAGS的方式啓動linux內核,本文使用新式的dtb方式啓動內核。 我使用的內核是linux-3.17.2版本,下面開始編譯內核。 (1) 解壓內核 tar jxf linux-3.17.2.tar.bz2(2

原创 棧——中綴表達式轉後綴表達式

中綴表達式轉後綴表達式的算法較爲簡單,採用棧來實現。規則如下:遇到數字:直接輸出 遇到'(':壓棧 遇到')':持續出棧,如果出棧的符號不是'('則輸出,否則終止出棧。 遇到符號則判斷該符號與棧頂符號的運算優先級,如果棧頂符號的運算優先級

原创 常用排序算法——歸併排序法

歸併排序採用的是分治思想,將數組不斷分解爲子數組,直到子數組只有一個元素,每次分解對應一個歸併函數,歸併函數可以將當前分解的兩個子數組合並起來。有兩種方式可以實現歸併排序,第一種是遞歸方式實現的,代碼如下:#include <iostre

原创 常用排序算法——冒泡、插入、選擇

冒泡排序法是初學者最早接觸的排序法,實現比較簡單,代碼如下:#include <iostream> void bubble_sort(int *a

原创 KMP字符串查找

KMP算法 KMP字符串查找算法的目的是減少不必要的比較次數,舉個簡單的例子,從字符串A:"abcdeabcdfg"中查找字符串B:"abcdf"。 使用普通的查找法查找字符串的步驟是這樣的: 先拿A[0:4]分別與B對應位置的字母比較,

原创 最小生成樹算法——Kruskal

Kruskal算法的原理是先將圖中的所有邊按照權從小到大排序,然後循環取邊,判斷添加上該邊後是子圖中否有閉合迴路,如果沒有,則添加該邊,否則捨棄該邊

原创 最短路徑算法——Dijkstra

Dijkstra的最短路徑算法是基於前驅頂點的最短路徑計算的,整體上來講還是比較簡單的,下面是代碼:#include <iostream> #inc

原创 AM335x(TQ335x)學習筆記——LCD驅動移植

TI的LCD控制器驅動是非常完善的,共通的地方已經由驅動封裝好了,與按鍵一樣,我們可以通過DTS配置完成LCD的顯示。下面,我們來討論下使用DTS方式配置內核完成LCD驅動的思路。 (1)初步分析 由於TQ335x使用的芯片是AM335x

原创 最小生成樹算法——Prim

Prim算法是任選一頂點作爲起始點,從當前已納入的頂點與未納入的頂點間的所有路徑中找出權最小的一條進行連接,循環直到所有的頂點都被納入。 代碼如下:

原创 常用排序算法——快速排序法

快速排序法是一種高效的排序法,算法的最終性能取決於選取的中間值,直接實現的快速排序法如下: #include <iostream> #include <algorithm> static int partition( int* arra

原创 最短路徑算法——Floyd

Floyd算法相比Dijkstra算法最大的區別是計算出了任意點起始到任意點的最短路徑,算法也不難理解,需要注意的是三層for循環的順序問題,k必須

原创 AM335x(TQ335x)學習筆記——掛載Ramdisk

上篇文章中我們已經能夠通過u-boot啓動內核了,但是沒有能夠啓動成功,從內核的log中可以看出,內核啓動失敗的原因是沒有掛載到root文件系統,本文將使用busybox製作根文件系統並打包成ramdisk供u-boot啓動內核使用。 (

原创 AM335x(TQ335x)學習筆記——GPIO按鍵驅動移植

還是按照S5PV210的學習順序來,我們首先解決按鍵問題。TQ335x有六個用戶按鍵,分別是上、下、左、右、Enter和ESC。開始我想到的是跟學習S5PV210時一樣,編寫輸入子系統驅動解決按鍵問題,但是瀏覽driver/input/k

原创 交換二叉樹的左右子樹——非遞歸方式

這是華爲的一道機試題,其實並不難,不讓用遞歸可以用棧來解決,具體的代碼如下:#include <stdio.h> #include <stdlib.h> struct node{ char data ; struct n

原创 AM335x(TQ335x)學習筆記——u-boot-2014.10移植

最近移植了下u-boot-2014.10到TQ335x,如果基於am335x evm進行移植,需要修改的地方並不多。 由於TI的am335x evm開發使用了一個eeprom保存了板載配置信息,用來區分不同板子的型號的,而TQ335x沒有