2018年5月6日 星期日

在mac建立stm32開發環境,eclipse+stm32+stlink,使用st-util+GDB Hardware Debugging下載與除錯


安裝st-link驅動
brew install stlink
這篇文章說是要另外下載,但我直接執行上述指令就成功安裝,不知道會不會動


安裝gcc-arm-none-eabi
brew tap PX4/homebrew-px4
brew update
brew install gcc-arm-none-eabi


下載安裝eclipse CDT

在eclipse-> Help -> Install New Software

Add -> http://gnuarmeclipse.sourceforge.net/updates
稍待清單出現,選擇需要的package
安裝完成會要求重新啟動eclipse

選擇新專案 File -> New -> Project -> C Project
接著就會出現 STM專案
勾選對應的硬體編號
設定專案名稱
在下一頁的Target processor settings選擇
Use system calls: -> POSIX
Trace output -> ARM ITM (via SWO)


安裝openocd: http://www.davidrojas.co.uk/stm32f3discovery-on-mac-os-x-using-eclipse-gcc-arm-and-openocd/
指令:brew install openocd --enable_ft2232_libftdi --enable_stlink
會安裝在 /usr/local/Cellar/open-ocd
打開 eclipse -> preference
裡面找到 Run/Debug -> String Substitution 裡面的 openoce_path
將openocd程式所在位置填進去

不用openocd
而是用st-util與GDB hardware debugging
在前面一開始提到的st-link驅動安裝
會在/usr/local/bin裡面安裝st-util
所以這裡在External Tool Configuration內設定執行外部程式/usr/loca/bin/st-util
st-util他會自動去抓已連接的st-link然後等待tcp/ip port的連接
port : 4242

然後小瓢蟲的地方要使用 GDB Hardware Debugging的方式連接
並且在Debugging tab的地方選擇tcp/ip 連接埠設定4242
接著在第三頁Startup的地方將RESET與Halt兩者反選,因為根據這裡指出,這一版eclipse有bug,選了這兩樣會導致debugger不能運作



每次要執行程式之前先按一下外部工具按鈕,讓st-util跑起來
然後再按小瓢蟲就可以連線下載~

參考資料:
http://macappstore.org/stlink/
https://blanboom.org/2014/stm32-with-osx/

2018年2月23日 星期五

raspberry pi SPI LCM 設定方法

樹莓派其中一種LCM介面是SPI
根據這篇文章指出
https://sudomod.com/forum/viewtopic.php?t=2312
步驟如下:
1.首先開啟樹莓派的SPI介面:使用命令列指令 sudo raspi-config



2.基本上使用  flexfb  跟 fbtft_device 這兩個核心外掛:基本指令如下:

sudo modprobe fbtft_device custom name=fb_ili9341  gpios=reset:25,dc:24,led:18 speed=16000000 bgr=1


3.在 /etc/rc.local 裡面添加三行,要加在 exit 0 這一行之前

sudo modprobe flexfb  width=480  height=320  regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3

sudo modprobe fbtft_device debug=3 rotate=0 name=flexfb speed=40000000 gpios=reset:25,dc:24

/usr/local/bin/fbcp&



第三步是用來執行開機自動執行核心模組掛載的動作
然後背景執行 fbcp 
fbcp 是一個framebuffer複製程式 用來將framebuffer內容複製起來然後透過SPI介面傳送到LCM的程式

fbcp需要下載原始碼並編譯與安裝
方法如下:

sudo apt-get install cmake
git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp/
mkdir build
cd build/
cmake ..
make
sudo install fbcp /usr/local/bin/fbcp


2018年2月20日 星期二

關於mbcWJFX的設計哲學

在2003那時候(根據原始碼中的註解)我打造了一個在palm上面運作的app
用途是在palm上面可以編輯與運行圖形化程式
是受到LabVIEW的啟發所做

當時是從一個簡單的palm範例開始
我記得那是一個塗鴉板程式範例
因為塗鴉板程式會運用palm的觸碰輸入與圖形之間的變化互動
因此用來實現這個專案十分洽當

palm os 是一種協調式多工
app主程式進來後有一個迴圈
在程式架構的設計上
不能有無窮迴圈或是等待迴圈在裡面
所有的事情必須切割成一片一片的時間

系統會回呼我們的事件處理副程式
static void AppEventLoop(void)
然後我們把要處理的所有事情安排在事件處理副程式中

這一個專案式我自發性的專案
在課餘時間做的
並且持續了一段時間
當時十分燒腦
而且呈現沉迷狀態

後來出社會工作後發現
這一次的專題訓練奠定了一個重要的基礎
因為後來開發生理監視器的時候
也是一個協調式多工
因此我在工作中引入許多當年累積的經驗與知識

特此為記

2017年12月12日 星期二

mechacar之7688DUO初次設定

32u4安裝firmata

設定密碼 XXXXXX(MAC末六碼,大寫)(是否統一小寫?TBD)
改 Device Name : mechacarXXXXXX (MAC末六碼,小寫)
設定網路為client
以上兩件事只能一次改一件

ssh root@mechacarXXXXXX.local 登入
以下#為ssh登入後的提示符號,#後的字串為需要輸入的指令
# opkg update
# opkg install unzip
# opkg install wget
# pip install pyMata

參考 https://docs.labs.mediatek.com/resource/linkit-smart-7688/en/tutorials/file-storage/mounting-the-root-fs-on-an-sd-card
轉移root到sd card
# opkg install block-mount kmod-fs-ext4 kmod-usb-storage-extras e2fsprogs fdisk

下載 mechaBYTE 軟體系統
# wget https://github.com/pondahai/MacroByte/archive/master.zip

# unzip master.zip
解開後會出現新資料夾 MacroByte-master/
將當中的 root資料複製到根目錄
# tar -C MacroByte-master/root -cvf - . | tar -C / -xf -

切換目錄到: /www/cgi-bin
# cd /www/cgi-bin

變更檔案屬性
# chmod +x /www/cgi-bin/roverLunar

回到電腦端 瀏覽器 輸入網址:mechacarXXXXXX.local/blockly
測試系統是否正確執行

指令拷貝區:
opkg update
opkg install unzip
opkg install wget
pip install pyMata
opkg install block-mount kmod-fs-ext4 kmod-usb-storage-extras e2fsprogs fdisk
wget https://github.com/pondahai/MacroByte/archive/master.zip
unzip master.zip
tar -C MacroByte-master/root -cvf - . | tar -C / -xf -
chmod +x /www/cgi-bin/roverLunar


用下列積木測試7688DUO上的D13 LED是否閃爍

2017年12月5日 星期二

STM32F103C8T6搭配ST-LINK V2在eclipse環境下開發的設定方法

每隔一段時間我都會試試看eclipse在於嵌入式系統開發方面有什麼進步
這一次找了一片STM32F103的板子
這個板子十分輕巧
48pin TQFP的包裝
板上零件只有3.3V穩壓IC、USB以及石英震盪器
剩下的空間都是接腳
還有一個大大的20pin JTAG


除錯器的部分採用ST-LINK V2

由於ST-LINK V2的連接器與板上的連接器不直接相容
這當中需要四個街腳來做傳輸
我沒有用原廠附上的連接線來接
而是採用萬孔板將線接起

安裝ST原廠驅動

ST-LINK有一個專頁
http://www.st.com/en/development-tools/st-link-v2.html
裡面有相關驅動以及工具程式
先把驅動以及工具程式裝起來
接著用工具程式測試一下ST-LINK與STM32F103之間的聯通是否正常
板子剛買來的時候裡面應該是安裝LED閃爍程式
因此板子一上電板上的LED就會閃爍
如果工具程式順利連通
則可以控制STM32的程式停止與執行

安裝cross compilier

到這裡下載適合的工具鍊組
https://launchpad.net/gcc-arm-embedded/+download
這裡我是根據eclipse外掛內建指定的cross compilier 名稱
gcc-arm-none-eabi
去google的


下載eclipse for C/C++及其外掛

很久沒玩eclipse,現在的eclipse感覺沒什麼變




 安裝好了之後
前往 Help -> Eclipse Marketplace...
在搜尋關鍵字的地方輸入 mcu 按ENTER
搜尋結果會出現一款名為 GNU MCU Eclipse的外掛,安裝它







接著到 Help -> Install New Software...
在Work With的地方下拉選單選擇 GNU MCU Eclipse Plug-in
底下會出現幾組特性選單,勾選
cross arm
cortexm
openocd
stm
這幾組



新增專案與指定編譯器

之後重新啟動eclipse
選擇新增專案 File -> New -> C Project
就可以看到 Project Type -> Executable裡面有新增加的 STM32相關專案模板

選擇STM32F10x專案模板
下一步可以看到一個目標處理器選單
可以挑選目標處理器
這裡選擇預設
下兩步後,會需要選擇編譯工具
這裡可以找到先前安裝的cross compilier
預設在Project Files裡面
在mac則是設定為/usr/local/bin

選擇內建的Builder

在專案欄位右鍵點選專案,選擇Properties
在Properties裡面選擇 C/C++ Build -> Tool Chain Editor
將Current Builder 下拉選擇 CDT Internal Builder

嘗試編譯

選擇工具圖示的槌子槌槌看
看編譯是否成功

安裝openocd.exe

Openocd是用來連線ST-LINK V2的中介程式
原則上參考這裡
https://gnu-mcu-eclipse.github.io/openocd/install/
但是有遇到openocd啟動後閃退
後來去找舊版的openocd.exe

設定除錯

參考
https://community.particle.io/t/tutorial-using-eclipse-st-link-v2-openocd-to-debug/10042
大意:
點選瓢蟲下拉選單選擇Debug Configurations
新增一組GDB OpenOCD Debugging設定
先在Debugger 分頁Execcutable path指定openocd.exe的位置
接著在config option新增一串指令 -f board\sparkcore.cfg
這串指令的用途是參照到外部的一個腳本檔
預設資料夾在openocd的script/boards裡面
windows10對於Program Files資料夾預設是不能更動
需要在資料夾的內容裡面將繼承取消才能夠對這資料夾新增檔案

這個腳本檔內容需要變更如下

# This is a SPARK-CORE board with a single STM32F103MD chip.
source [find interface/stlink-v2.cfg]
set WORKAREASIZE 0x4000
source [find target/stm32f1x.cfg]
# use hardware reset, connect under reset
reset_config none separate

除錯執行

點選瓢蟲按鈕下拉選單,選擇上述新增的設定檔
此時eclipse會切換視窗編排成為除錯格式
並且程式原始碼會反白在main()
這時候就可以點選除錯按鈕了



周邊功能原始碼過濾器
專案樹中 system/src/stm32f1-stdperiph
是周邊功能原始碼
可使用過濾器決定原始碼是否編入
如有功能未用到可列入排除過濾器
避免未用到的程式碼佔用記憶體


2017年11月27日 星期一