RO是程序中的指令和常數
RW是程序中的已初始化變數
ZI是程序中的未初始化的變數
當程式變數前加上const的關鍵字,這個變數就會分配在RO區段裡,也就是在ROM裡。

部落格 發表在 痞客邦 留言(0) 人氣()

  • May 01 Sun 2011 18:41
  • FAT

2011-05-01 21 23 44.png
MBR:
電腦業界規定都存放於硬碟的第零磁柱、第零磁頭、第一磁區,也就是最前面的磁區裏,這個磁區稱為主啟動記錄 ( 即 MBR,master boot record )。
在 MBR 裏除了分割表外,還有啟動程式。前面提過,每個磁區都佔 512 個位元組,MBR 磁區中的前 446 個位元組 ( 0~445 )
用來存放啟動資料與程式,而接下來的 64 個位元組就是分割表,最後一個字組 ( 2 個位元組 ) 是 AA55H,作為識別之用。


分割表共有 64 個位元組,恰好可以描述四個分割區的性質 ( 即三個主要分割與一個擴充分割 ),所以每個分割用 16 個位元組來表示這個分割區的性質,說明如下:









偏移位址

大小(位元組)
名  稱
說  明


00H
1
啟動狀態
80H 表示可啟動  00H 表示不可啟動


01H
1
起始磁頭
00H 表示不可啟動


02H
2

起始磁柱
與起始磁區



起始磁區佔用 6 個位元,而起始磁柱佔用 10
個位元,分配情形是:
起始磁區:  這兩個位元組中,低位元組的 0~5
位元為起始磁區
起始磁柱:  這兩個位元組的高位元組為起始磁柱的 0~7
位元,
               這兩個位元組中,低位元組的 6~7 位元為起始磁柱的最高兩個位元(第8~9 位元 )



04H
1
檔案系統

06H,0EH:FAT16
0BH,0CH:FAT32
05H,0FH:扩充分割
07H:NTFS 或 OS/2 HPFS





05H
1
結束磁頭




06H
2

結束磁柱
與磁區



同起始磁柱與磁區


08H
4
分割區
相對位置

距離 MBR 的磁區數,亦即此分割開始的 LBA 磁區編號或隱藏磁區數


0CH
4
磁區數
該分割磁區總數


部落格 發表在 痞客邦 留言(0) 人氣()

皮爾斯震盪器Pierce oscillator,或稱皮爾斯晶體震盪器)是一種電子振盪電路,特別適用於配合石英振盪晶體以產生振盪訊號
工作原理




簡單的皮爾斯震盪器電路


部落格 發表在 痞客邦 留言(0) 人氣()

問:板子上電後,怎麼確定mcu有沒有工作?
答:電壓當然要先確定是正常的,有示波器的可以量震盪器是否有輸出波形,沒有示波器的咧,可以用電錶測量晶體兩端到地的電壓,如果是0v表示沒有起震,如果是1.7~1.9v左右就表示有起震了,兩端會有些微壓差。
問:板上電後,怎麼確定mcu有沒有工作?第二種情況 把腳位整個焊錯,但不知道焊錯了,要怎麼檢查,小弟就發生了><
答:小弟用的是LPC1768,在這個mcu中有隻reset out pin,在正常的情況下這隻腳會是高電位,但小弟量的時候發現是低電位,而板子也沒有起震,就想會不會我連腳位都焊錯了,才發現的,這顆ic有三個圈圈,我把第一個圈圈當做地一隻    腳,其實第二的圈圈才是,糗

問:當板子上電後,連接ice(我是使用jlink大陸板),mcu裡需要有code才能被識別cpu id 嗎?
答:不用,因為mcu出廠的時候裡面已經有燒boot code了,只要腳位正確,供電正常,mcu有內部震盪器(IRC 約4MHz)提供clock給core(這時還可以不用外接震盪器),所以插上ice時就應該可以識別出mcu了,當然ice要支援mcu。
問:在電源端可以串連電阻嗎?
答:是可行的,當然也要並聯一顆0.1uf的電容,但電阻的阻值不能太大,前提就是不能影響到元件的正常工作。
一般 MMC 或 SD 的 VDD 上串電阻是用來隔絕一些雜訊,頂多 2.2 歐姆就很了不起了,0.2A x 2.2ohm = 0.44V,如果卡片抽不到 200mA 勉強還可以動(3.3V - 0.44V=2.86V)。因為小弟我手焊的板子,在插sd card的時候會造成mcu reset,所以在sd card的power pin串連一顆470 ohm的電阻,發現就不會有reset的情況出現,去論壇發問,才知道原來電阻也不能太大,會影響到sd card的動作。所以記錄下來。
問:在點lcm(1602),最基本的lcd 模組,沒有反應怎麼辦?
答:先檢查電壓是否正確,腳位是否正確,都正確,也可以初始化lcd,但後面下cmd就沒有反應了,檢查一下lcd的Vo這隻腳是不是接地,如果是接地的話,表示lcd的對比是開到最大的,會蓋過送出來的資料顯示,所以記得要把對比調低,此時會發生其實沒有問題,lcd是正常工作,只是對比太高把資料顯示蓋住了。
問:如果再使用ice時,燒程式到mcu後run程式發現進入當機情況,然後就連不上ice了,怎麼辦?
答:可以使用進入isp的腳位,使mcu進入isp,然後再連接ice就可以了,因為mcu的isp是另一條路可以使mcu正常啟動,這樣就可以進入jtag模式,而連上ice了。
問:大陸板的jlink v8無法使用連燈號都沒有,怎麼辦?
答:這是因為jlink內部的code亂掉(是什麼原因亂掉,我也還不清楚),這時拆開jlink會發現在pcb板上有TST,EARSE的孔位,先短路EASER約一分鐘,斷電後斷開EARSE(清除Jlink v8 mcu的firmware),在短路TST一分鐘,斷電後段開TST(讓mcu恢復出廠的boot code),此時將jlink連上pc會出現com port,此時在用atmel sam-ba燒寫jlink v8 firmware(V84.10.bin),jlink v8是使用atmel at91sam7s64這顆mcu.之後再補上圖片跟操作步驟。

部落格 發表在 痞客邦 留言(1) 人氣()

本文引用自chingfan - 何謂callback function?「如果發生了某件事,就做這件事」
簡單的說,如果你使用了某個function,那麼你就是『call』了一個function。如果系統或是函式是要求你給一個function
pointer,這個function
pointer指到一個實際的函式(多半這個函式是你自己寫的)。然後它會在適當的時間呼叫此function,則此function就是所謂的
callback function。因為這個function是被『callback』了。

部落格 發表在 痞客邦 留言(0) 人氣()

pulling_task.jpg
在小型MCU上面用的工作排程(Task Schedule)Bee整理了一下。
發現從使用硬體中斷,到即時作業系統(RTOS)之間有演進的程序。

1.Round-Robin:
不使用中斷,只使用輪詢方式,做為排程。
2.Foreground/Background:只使用中斷,利用硬體排程。
3.Round-Robin with Interrupt:使用中斷及輪詢混合式排程。
4.Coroutine:將輪詢方式的排程改為經由軟體呼叫方式切換。並加入排程工作鏈,管理工作加入及移除。
5.Real-Time Operating System:現代即時作業系統,函式一下子增加了許多。工作切換可以利用設定事件(Event)方式,設定排程的條件。
前三種及RTOS在uCOS的書中有介紹,但Bee認為奇怪的是為何工作排程一下子變的如此複雜。
在使用中斷管理及現代作業系統之間,一定存在軟體可以管理,但又沒有強制切換的管理系統。
不幸的是,中間型式就像物種進化中的失落環節一樣,幾乎找不到資料。
後來才從Forth語言及Lua語言上找到Coroutine,Bee才確定有Coroutine這型排程管理系統存在。
以下就功能特性做一個比較:
1.Round-Robin:
    特性:這是最簡單的排程系統,但時間控制不精準。
    Task Control : Pulling
    Time Function : Depend on assemble code or instruction delay
    Data Exchange : Global variable
    State Machine : Run on open loop,state control by data

部落格 發表在 痞客邦 留言(0) 人氣()

剛剛因為想在這裡撥兩首音樂,結果搞不出來,一氣之下就去google大神,問卜啦!!沒有想到找到這個不錯的網站,可以免費下載mp3,又可以有外嵌播放器,還真不錯就介紹一下,大家可以有興趣可以在我的連結找到這個網址。
如果要撥多首歌,只要在這個網站把歌加入你的list後,你的部落格也就同時更新了,蠻方便的,如果你放進網頁,如果太大可以修改寬高還有這個參數scale="scale",就不會截圖了。
沒想到第一篇文章,是這個,哈哈哈哈,還以為是有關單晶片的~~~~

部落格 發表在 痞客邦 留言(1) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。