http://blog.csdn.net/zhanglianpin 基礎知識裡已經基本上講解了UCOS要生活的家(即硬體平台環境),還有就是為了讓進階語言寫的程式能變成在硬體平台上直接啟動並執行程式,編譯器都幹了些什麼。還有這個C語言啟動並執行環境問題,也就是從硬體和組合語言的角度去理解進階語言。 下面我們就從硬體加電到UCOS真正運行起來這樣一種思路講解一個嵌入式即時作業系統的實現原理以及它所包含的精髓。好了,現在就介紹一下我們所有的軟硬體設施和用到的所有的工具。 硬體:用的硬體平台是博創24
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 原子鎖是多線程編程中的一個特色。然而,在平時的軟體編寫中,原子鎖的使用並不是很多。這其中原因很多,我想主要有兩個方面。第一,關於原子鎖這方面的內容介紹的比較少;第二,人們在編程上面習慣於已有的方案,如果沒有特別的需求,不過貿然修改已存在的代碼。畢竟對很多人來說,不求有功,但求無過。保持當前代碼的穩定性還是很重要的。
LPC2000 UART串口使用心得針對zgpswh在串口使用上的一些難題,總結個人在前一階段的理解,比較片面,不對的地方請高手指正。1、LPC2000
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing
http://blog.csdn.net/zhanglianpin 我是一名電腦系的學生,總想弄明白我們現在學的電腦到底是怎麼工作的。而整個電腦知識是一個龐大的理論體系,且是分為很多階層的,簡單說有硬體層,軟體層。而理解這些不同層次的知識的關鍵在於理解層次之間的借口,借口理解透徹了,那你就能把各層次的知識融為一體,這些知識也必然可以為你所用了。研究中介軟體最好的就是作業系統了,但是我們學習的作業系統課程太過於理論化和複雜化,學完了仍然不知所云,可以說大部分理科生學到的只是“文科”的作業系統。為了
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 軟體調試是我們軟體開發過程中的重要一課。在前面,我們也討論過程式調試,比如說這裡。今天,我們還可以就軟體調試多講一些內容。比如說條件斷點,資料斷點,多線程斷點等等。#include <stdio.h>int value = 0;void test(){int total;int index;total = 0;for(index = 0; index < 100;
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 相信有過多線程編程經驗的朋友,都吃過死結的苦。除非你不使用多線程,否則死結的可能性會一直存在。為什麼會出現死結呢?我想原因主要有下面幾個方面: (1)個人使用鎖的經驗差異 (2)模組使用鎖的差異 (3)版本之間的差異 (4)分支之間的差異 (5)修改代碼和重構代碼帶來的差異
關鍵字: 迴圈緩衝區 串口通訊據處理演算法 串口通訊
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 對於編寫多線程的朋友來說,隊列具有天生的互斥性。在隊列裡面,一個負責添加資料,一個負責處理資料。誰也不妨礙誰,誰也離不開誰。所以,隊列具有天生的並行性。#define MAX_NUMBER 1000L#define STATUS int#define OK 0#define FALSE -1typedef struct _QUEUE_DATA{ int data[MAX_
http://blog.csdn.net/zhanglianpin我在學習嵌入式作業系統UCOS時,有很大的迷茫之處,在於我不知道我用的工具到底幫我幹了些神馬工作。下面就說一下我當時的疑問:1:編譯器和連結器幹了些神馬?我現在也還沒能力知道它是怎麼乾的這些工作。以後慢慢來唄。但當時我連它幹了神馬都不清楚。2:它輸入的是來源程式,那他輸出的是什嗎?有格式嗎?是什麼樣子那?重重疑問。 ADS編譯器的目的是怎麼把進階語言編程能在ARM平台上直接啟動並執行東東。而我們的目的是看看他幹了些神馬,讓我們瞭解
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 在互斥資料訪問中有一種多讀少寫的情況。正對這麼一種情形,我們也提出了讀寫鎖的方案。但是呢,這個鎖有些缺陷。什麼缺陷呢?那就是,這個寫鎖需要在所有的讀鎖完成之後才能寫。否則的話,寫鎖需要這麼一直等下去。 那麼,有沒有什麼辦法能使得寫操作快速一點進行呢?那就是順序鎖。typedef struct _SEQUENCE_LOCK{ unsigned int sequence;
http://blog.csdn.net/zhanglianpin閱讀這些內容前,希望你對電腦有了一點簡單的概念,最好學習過電腦群組成原理並知道一些最基本的概念。如果你學習過51系列的單片機並且利用51系列的單片機做過一些開發,那看這些內容就很簡單了。如果你沒這些知識也沒關係,以我的學習經曆來看,可以給大家一個學習電腦群組成原理的建議。你可以先大致學習一下電腦群組成原理,學完之後一般會對電腦有一個大體的瞭解,電腦專業在開設這門課時一般會安排電腦群組成原理實驗,這個實驗大家要好好去做,這樣會打消你
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 前面,為了使得寫操作快速進行,我們定義了順序鎖。但是順序鎖有個缺點,那就是處理的資料不能是指標,否則可能會導致exception。那麼有沒有辦法使得處理的資料包括指標呢?當然要是這個鏈表沒有鎖,那就更好了。 針對這種無鎖鏈表,我們可以初步分析一下,應該怎麼設計呢? (1)讀操作沒有鎖,那麼怎麼判斷讀操作進行中呢,只能靠標誌位了;
專案管理系統:http://kuai.xunlei.com/d/wtViAgI.2wBlSzlRcf4自己動手寫架構:http://kuai.xunlei.com/d/wtViAgLZ2gAUSTlR375ASP.NET實戰中國電信CRM:http://kuai.xunlei.com/d/wtViAgIA2gD3RDlR2e2雲端運算中介軟體開發:http://kuai.xunlei.com/d/wtViAgKn2QCoQzlR050雲端運算商城C2C項目:http://kuai.xunlei.
http://blog.csdn.net/zhanglianpin先說明一下在加電之前的這個軟硬體情況,這個三星公司根據ARM920T軟核生產的這個s3c2410整合了64M的sdram和64M的nandflash儲存空間。Vivi和UCOS都儲存在這個nandflash中,因為nandflash斷電後不會丟失資訊。這個VIVI是三星公公司為ARM系列晶片書寫的bootloader,用於開發階段,做系統的引導程式。VIVI存放在flash
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 要想編寫多線程,那就要使用鎖。而在軟體編寫中,資料結構是少不了的。所以,我們在編寫多線程的時候,就需要考慮一下如何在資料結構中插入鎖。當然,有些資料結構是沒有鎖的,所以自然這個鎖並不一定是必須的。 比如說,我們編寫一個多線程堆棧,應該怎麼做呢,typedef struct _STACK{ void* pData; int maxLen; int top;
http://blog.csdn.net/zhanglianpin使用者模式(user模式),運行應用的普通模式; 快速中斷模式(fiq模式),用於支援資料轉送或通道處理;
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 多核編程並不是最近才興起的新鮮事物。早在intel發布雙核cpu之前,多核編程已經在業記憶體在了,只不過那時候是多處理器編程而已。為了實現多核編程,人們開發實現了幾種多核編程的標準。open-mp就是其中的一種。對於open-mp還不太熟悉的朋友,可以參照維基百科的相關解釋。
http://blog.csdn.net/zhanglianpin直接開始說明ucos建立任務時的步驟:1, 初始化任務堆棧2, 初始化任務控制塊3, 把剛建立的任務設定為就緒態(即置位就緒表)上面提到的任務堆棧,控制塊,就緒表我們前面已經說過了,下面就直接看代碼。INT8U OSTaskCreate (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio){ OS_STK *psp; INT8U
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 優先順序反轉對於編寫應用程式層的人員來說不大會發生,但是對於作業系統的設計者來說確是一個逃不過去的問題。要知道怎麼樣處理優先順序反轉?那麼先看看它是怎麼發生的。 (1)調度隊列和線程優先順序