သူ့အတွက် MCUXpresso Integrated Development Environment (IDE) ကို download လုပ်ပြီး၊ install လုပ်ပါမယ်။ အခြား လိုအပ်တဲ့ tools တွေကိုလည်း ဒီမှာ တွေ့နိုင်ပါတယ်။ MCUXpresso ကိုဖွင့် ပြီး workspace သတ်မှတ်ပြီးတဲ့ အခါ ဘယ်ဘက်အောက်နားက Quick Start Paner ထဲက Import projects from file system ... ဆိုတာကိုနှိပ်ပြီး Browse LPC open resources ကိုနှိပ်ပြီး နမူနာ တွေကို ယူနိုင်ပါတယ်။
LPC824 board ကို ကွန်ပျူတာနဲ့ ဆက်လိုက်ရင် mass storage တစ်ခုအနေနဲ့ ပေါ်လာပါမယ်။ အဲဒါကို ပိတ်ထားနိုင်ပါတယ်။ ပြီးရင် နမူနာတွေထဲက periph_blinky ဆိုတဲ့ project ကို စမ်းကြည့်ပါမယ်။ အဲ့ဒီ project folder ထဲက readme တို့၊ src folder ထဲက source code တို့ကို ကြည့်ပြီးတဲ့ အခါ ခုနက ဘယ်ဘက်အောက်နားက Quick Start Paner ထဲမှာပဲ Build ကို နှိပ်ပြီး compile လုပ်နိုင်ပါတယ်။ ပြီးတဲ့အခါ သူ့ရဲ့ အောက်နားမှာပဲ Debug ကို နှိပ်ပြီး၊ MBED CMIS-DAP ဆိုတဲ့ probe ကိုရွေးပြီး တဲ့အခါ၊ မြား အစိမ်းလေးကို နှိပ်ပြီး run ကြည့်လိုက်ရင် LPC824 board ပေါ်က LED အနီရောင် blink ဖြစ်နေမှာကို တွေ့ရပါမယ်။
MCUXpresso မှာ GUI flash programmer ပါ ပါပါတယ်။ သူ့ကို command prompt ကနေလည်း အောက်ကလို run လို့ရပါတယ်။
crt_emu_cm_redlink --flash-mass-load "Y:\periph_blink.axf" -g --debug 2 --vendor NXP -p LPC824 -ProbeHandle=1 -CoreIndex=0 --flash-driver LPC800_32.cfx
Flash content တွေကို လုံခြုံအောင်ကာကွယ်ဖို့ အတွက် LPC82x User manual ရဲ့ စာမျက်နှာ 371 မှာ Code Read Protection (CRP) options တွေအကြောင်းပြောပြထားပါတယ်။ CRP level ကို src folder ထဲက crp.c ထဲမှာ အောက်ကပုံမှာ ပြထား သလိုမျိုး ပြင်နိုင်ပါတယ်။ Project -> Properties -> C/C++ build -> Settings -> Tool Settings Tab -> MCU Linker -> Managed Linker Script -> Enable automatic placement of Code Read Protection field ကို tick လုပ်ထား မထား စစ်ပြီး၊ မလုပ်ရသေးရင် tick လုပ်ထားဖို့ လိုပါတယ်။
ပြီးရင် project အောက်က Binaries folder ထဲက periph_blinky.axf ဆိုတဲ့ ဖိုင်ပေါ်မှာ right click နှိပ်ပြီး Binary Utilities -> Disassemble လုပ်နိုင်ပါတယ်။ ထွက်လာတဲ့ dis ဖိုင်ထဲမှာ CRP_WORD ကို ရှာကြည့်လိုက်ရင် address 2fc မှာ သတ်မှတ်လိုက်တဲ့ သက်ဆိုင်ရာ တန်ဖိုး ရောက်နေတာကို တွေ့နိုင်ပါတယ်။
Intel hex format နဲ့ ထွက်စေချင်ရင် Project -> Properties -> C/C++ build -> Settings -> Build steps -> Post build steps မှာ Edit ကိုနှိပ်ပြီး အောက်ကလိုင်းကို ထည့်ပေးနိုင်ပါတယ်။
arm-none-eabi-objcopy -v -O ihex "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.hex"
ထွက်လာတဲ့ hex ဖိုင်ထဲမှာ ကြည့်လိုက်ရင် address 2fc မှာ သတ်မှတ်လိုက်တဲ့ သက်ဆိုင်ရာ CRP တန်ဖိုး ရောက်နေတာကို တွေ့နိုင်ပါတယ်။
Flash ကို burn ပြီးရင် power ပိတ်ပြီး ပြန်ဖွင့်လိုက်မှ သက်ရောက်မှု ရှိမှာဖြစ်ပါတယ်။ အဲ့ဒီလို လုပ်တဲ့ အခါ သတိထားရမှာက CRP level 3 ဆိုရင် chip ကပြန်သုံးလို့ မရတော့ပဲ အသေ ဖြစ်သွားပါမယ်။ CRP level 2 ဆိုရင်တော့ flash က ရေးလို့၊ ဖတ်လို့ မရတော့ပဲ SWD pin တွေလည်း သုံးလို့ မရတော့ပါဘူး။ ပြန် erase လုပ်မှပဲ ရမှာပါ။ အဲ့လို erase လုပ်ဖို့ကလည်း Flash magic တို့လို software သုံးပြီး uart ကနေဖျက်မှ ရပါမယ်။
UART ကို FTDI cable အစရှိတဲ့ usb to uart converter တစ်ခုခု သုံးပြီး ဆက်လို့ရပါတယ်။ ကျနော်ကတော့ CP2102 adapter ကို သုံးခဲ့ပါတယ်။ LPC824 board (schematic) က Arduino pin နဲ့တူတဲ့ အတွက် D0 pin (P0_0) က Rx ဖြစ်ပြီး၊ CP2102 adapter ရဲ့ Tx နဲ့ ဆက်ဖို့ လိုပါတယ်။ D1 pin (P0_4) က တော့ Tx ဖြစ်တဲ့ အတွက်၊ CP2102 module ရဲ့ Rx နဲ့ ဆက်လိုက်ပါတယ်။ Flash magic နဲ့ erase မလုပ်ခင်မှာ ISP ခလုပ်ကို နှိပ်ထားပြီး reset လုပ်ဖို့ လိုပါတယ်။
Flase magic မသုံးပဲ serial port ကိုပဲ သုံးပြီး ကိုယ့်ဟာကိုယ် အောက်က commands တွေပို့ပြီး erase လုပ်ရင်လည်း ရပါတယ်။
From host or controller | Command | Hexadecimal | Description |
H | ? | 3F | initiate to sync |
C | Synchronized | 53 79 6E 63 68 72 6F 6E 69 7A 65 64 0D 0A | reply |
H | Synchronized | 53 79 6E 63 68 72 6F 6E 69 7A 65 64 0D 0A | ack sync |
C | OK | 4F 4B 0D 0A | |
H | 12000 | 31 32 30 30 30 0D 0A | freq 12 MHz |
C | OK | 4F 4B 0D 0A | |
H | U 23130 | 55 20 32 33 31 33 30 0D 0A | unlock wr and erase with unlock code 23130 |
C | 0 | 30 0D 0A | success code |
H | P 0 31 | 50 20 30 20 33 31 0D 0A | prepare sector 0 to 31 for erase or wr |
C | 0 | 30 0D 0A | success code |
H | E 0 31 | 45 20 30 20 33 31 0D 0A | erase sector 0 to 31 |
C | 0 | 30 0D 0A | success code |
UART နမူနာတွေ သုံးကြည့်တဲ့ အခါ LPC824 board ကိုယ်တိုင်က Mbed serial ဆိုပြိး ကွန်ပျူတာမှာ serial port တစ်ခု အနေနဲ့ သုံးလို့ရပါတယ်။ သူ့ကို သုံးဖို့ အတွက် SJ9 မှာ ရှိတဲ့ 0 ohm resistor ကို pin 2 နဲ့ 3 မှာ ပြောင်းဆက်ပေးဖို့ လိုပါတယ်။
No comments:
Post a Comment