分享到plurk 分享到twitter 分享到facebook

版本 8333dfc01937d5a3677e438b3ae7262159bc794d

embedded/Flash

Changes from 8333dfc01937d5a3677e438b3ae7262159bc794d to 482bf5e3e8b0eeb6c16ecc613029d12b06b4805a

---
title: Flash
categories: STM32F4
...
1.STM32F407VG 硬體介紹
 ============
- STM32F407VG版子外觀與模組如下圖所示:

.. image:: /STM32F4_2.jpg

- 上方USB Programmer/Debugger為ST-Link
- 石英晶體震盪器(Crystal),可參考(http://zh.wikipedia.org/zh-tw/%E7%9F%B3%E8%8B%B1%E6%99%B6%E4%BD%93%E8%B0%90%E6%8C%AF%E5%99%A8)
- 中央的晶片為ARM® Cortex™-M4F core with embedded Flash and SRAM,其內部結構如Figure 5所示。
- 三軸加速度感知器(3-axis Accelerometer)
- 音頻數位類比轉換(Audio DAC)
- 麥克風晶片(Chip Microphone)
- USB On The Go (http://forum.slime.com.tw/thread180246.html)
- 音效輸出(Audio Jack)
- 此外,板子上有兩顆按鈕,藍色按鈕為User Button,黑色按鈕為Reset。

.. image:: /block_diag_1.JPG

.. image:: /block_diag_2.JPG

2.Software STM32F4 Lib
 ============

.. image:: /lib_1.JPG

3.debug gdb(介紹指令和操作方式)
 ============

- Debug設定大致如下圖所示(TCP/IP) : 

.. image:: /gdb_1.JPG

- Debug流程主要為 :

(1) 在Target(MCU)端開啟App與gdbserver。如果已經將程式燒入flash, 要透過MCU內建的gdb server來debug, 則必須使用st-util:

::

  st-util -p 3333

(2) 開啟Host端的gdb:

::

  arm-none-eabi-gdb your_elf_image.elf

(3) 連接到Target端的gdbserver,如

::

  target extended-remote : 3333 

(4) 當應用程式就緒後,可指定中斷點,接著按c,就會在指定的中斷點停下來。

- 可參考(http://www.codeproject.com/Articles/14983/Remote-Debugging-using-GDB)

4.flash 簡介(wiki)(user)(操作)
4.Flash 簡介(wiki)(user)(操作)
 ============

- 快閃記憶體(Flash Memory、閃存),主要用於一般姓資料儲存,以及在電腦及其他數位產品間交換傳輸資料。如記憶卡、隨身碟等。快閃記憶體是一種特殊的、以大區塊抹寫的EEPROM(電子抹除式可複寫唯讀記憶體)。

- 快閃記憶體晶片的低階介面通常與透過支援外界的定址匯流排行隨機存取的DRAM、ROM、EEPROM等記憶體不同。 NOR Flash本身為讀取操作(支援隨機存取)提供外部定址匯流排;至於解鎖、抹除與寫入則須以區塊-區塊(Block-by-block)的方式進行,典型的區塊大小為64、128或256位元組。NAND Flash所有的動作都必須以區塊性基礎(Block-wise fashion)執行,包含讀、寫、解鎖與抹除。

- NOR Flash Structure :

.. image:: /NOR flash.JPG

- NAND Flash Structure :

.. image:: /NAND flash.JPG

** 關於NAND Flash 與 NOR Flash的比較可參考 (http://www.8051faq.com.cn/manager/download/20077633203664115781250.PDF)。 *


5.flash 記憶體架構介紹
 ============
6.flash register
 ============
7.example(範例流程)
 ============
8.ref
 ============