¤¤¤í¤¤¤í»î¤¹62

¡üPicoscope7¤Î¥½¥Õ¥È¤¬¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¡ªº£ÅÙ¤³¤½°ÂÄê¡Ä¤«¡©
¤¹¤°¥Õ¥ê¡¼¥º¤·¤¿¤êÍî¤Á¤¿¤ê¤Ç¤Ê¤«¤Ê¤«°ÂÄꤷ¤Ê¤¤Picoscope7¤Î¥½¥Õ¥È¤Ç¤¹¤¬
StableÈǤ¬7.1.29¤Ë¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤·¤Æ¤ª¤ê¤Þ¤·¤¿¡£

º£ÅÙ¤³¤½ËÜÅö¤ËStable¤Ê¤ó¤Ç¤·¤ç¤¦¤Í¡Ä¡ª¡©(¤É¤­¤É¤­
¢¨²ñ¼Ò¤Ç¸½Ìò¤Ç¥Ð¥ê¥Ð¥ê»ÈÍÑÃæ¤ÎPicoscope3206A¤Ç»î¤·¤Æ¤Þ¤¹


☝2²èÌÌ¤ÇÆ°¤«¤·¤ÆÊüÃÖ¤¹¤ë¤È¸Ç¤Þ¤Ã¤¿orz

¡Ä
¥Õ¥¡¡»¥Ã¥Ã¥Ã¥¯¡ª¡ª¡ª¡ª¡ª

´ðËÜŪ¤ÊÁàºî¤Ï¤À¤¤¤Ö°ÂÄꤷ¤Æ¤­¤Þ¤·¤¿¤¬¤Á¤ç¤Ã¤ÈÊ£»¨¤ÊÁàºî¤Ï¤Þ¤À
°ÂÄꤷ¤Æ¤¤¤Ê¤¤¤è¤¦¤Ç¤¹¤Í¡Ä

¤È¤¤¤¦¤ï¤±¤Ç°ÂÄꤷ¤Æ»ÈÍѤǤ­¤ë¤Þ¤ÇPicoscope6»È¤Ã¤Æ¤¤¤­¤Þ¤·¤ç¡Ä¡£


¡üarm-gcc¤¬µ×¡¹¤Î¹¹¿·
Arm GNU-GCC¤¬µ×¡¹¤Î¹¹¿·¤Ç¤¹¡£
¤È¤¤¤Ã¤Æ¤âGCC14¤Ç¤Ï¤Ê¤¯¤Þ¤ÀGCC13¤Î¤Þ¤Þ¤Ç¤¹¡Ä¡£
13.2->13.3¤Î¥Þ¥¤¥Ê¡¼¥Á¥§¥ó¥¸¤Ç¤¹¤Í¡£
¤Þ¤¿¡¢º£²ó¤Ï¥»¥­¥å¥ê¥Æ¥£Âкö¤Î¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ¤ª¤ê¤Þ¤¹¡£

Ʊ¤¸¥×¥í¥°¥é¥à¤ò¥Ó¥ë¥É¤·¤Æ¥Ð¥¤¥Ê¥ê¥µ¥¤¥º¤ÎÈæ³Ó¤Ç¤¹¡£
13.2Rel1(Á°¤Î¤ä¤Ä)

arm-none-eabi-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 479156 0 479156 74fb4 main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
477416 1740 39668 518824 7eaa8 main.elf
main.elf :
section size addr
.text 0x747fc 0x8000000
.ctors 0x0 0x80747fc
.dtors 0x0 0x80747fc
.eh_frame 0x54 0x80747fc
.ARM.exidx 0x98 0x8074850
.data 0x6cc 0x20000000
.bss 0x18a8 0x200006d0
.heap 0x0 0x20001f78
.ram2 0x0 0x20040000
.stack 0x0 0x20040000
.ram3 0x824c 0x20050000
.bkpram 0x0 0x40036400
.qspirom 0x0 0x90000000
.comment 0x44 0x0
.debug_frame 0x1e88 0x0
.ARM.attributes 0x38 0x0
.debug_line_str 0x1f2 0x0
Total 0x80b9e

13.3Rel1(¿·¤·¤¤¤Û¤¦)
arm-none-eabi-gcc (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24)) 13.3.1 20240614
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 478396 0 478396 74cbc main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
476624 1772 39668 518064 7e7b0 main.elf
main.elf :
section size addr
.text 0x744e4 0x8000000
.ctors 0x0 0x80744e4
.dtors 0x0 0x80744e4
.eh_frame 0x54 0x80744e4
.ARM.exidx 0x98 0x8074538
.data 0x6ec 0x20000000
.bss 0x18a8 0x200006f0
.heap 0x0 0x20001f98
.ram2 0x0 0x20040000
.stack 0x0 0x20040000
.ram3 0x824c 0x20050000
.bkpram 0x0 0x40036400
.qspirom 0x0 0x90000000
.comment 0x45 0x0
.debug_frame 0x1d98 0x0
.ARM.attributes 0x38 0x0
.debug_line_str 0x1f2 0x0
Total 0x807b7

Flash»ÈÍÑÎ̤ϸº¤ê¤Þ¤·¤¿¤¬¡Ä¡¢
¤¦¤¦¤à¼ã´³SRAM»ÈÍÑÎÌÁý¤¨¤Æ¤Þ¤¹¤Í¡Ä¡£


map¥Õ¥¡¥¤¥ë¤òÈæ³Ó¤·¤Æ¤Þ¤·¤¿¤¬newlib¤ÇSRAM¤Î»ÈÍÑÎ̤¬32byte¤Û¤ÉÁý¤¨¤Æ
¤ª¤ê¤Þ¤·¤¿¡£¡Ä¤Þ¤¡¤³¤ÎÄøÅ٤ʤéµöÍÆ¤ÎÈÏáÆ¤Ç¤·¤ç¤¦¡Ä¡£

°ì±þSTM32H5¤Çlibpng¤ÎDecode®Å٤Υѥե©¡¼¥Þ¥ó¥¹¤òÈæ³Ó¤·¤Æ¤ß¤Þ¤·¤¿¡£
13.2Rel1

13.3Rel1

¤¢¡Ä¤¢¤ê¤ê¡Ä
¤Á¤ç¤Ã¤È¤«¤Ê¤êÃÙ¤¯¤Ê¤Ã¤Æ¤ë¡Ä(»é´À
¡Ä
GCC14¤Ë´üÂÔ¤·¤Þ¤·¤ç¤¦¡Á¡ª¡ª

20240826ÄÉ:
13.3Rel1¤ÎGDB¤ÏCortex-M33¥³¥¢¤Çbreakpoint¤¬¸ú¤«¤Ê¤¯¤Æ¥Ç¥Ð¥Ã¥°¤¬
¤Ç¤­¤Ê¤¤¤³¤È¤¬È½ÌÀ¤·¤Þ¤·¤¿¡Ä(¿ʬ¥Ð¥°¤Ç¤¹)
¤Ò¤È¤ÄÁ°¤Î13.2Rel1¤Î¤ä¤Ä»È¤¤¤Þ¤·¤ç¤¦¡Ä

20240828ÄÉ:
13.3Rel1¤ÎGDB(GDB14)¤Ï¤Á¤ç¤Ã¤Èµ¬ÌϤ¬Â礭¤¤¥×¥í¥¯¥é¥à¤Ë¤Ê¤ë¤È
breakpoint¤¬¸ú¤«¤Ê¤¯¤Ê¤Ã¤Æ¥Ç¥Ð¥Ã¥°¤¬Á´¤¯¤Ç¤­¤Ê¤¯¤Ê¤ë¤³¤È¤¬
ȽÌÀ¤·¤Þ¤·¤¿¡Äorz¤ª¤½¤é¤¯GDB¤Î¥Ð¥°¤Ã¤Ý¤¤µóư¤Ç¤¹¤¬¤Þ¤À¾ðÊó¤¬
½Ð¤½¤í¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Çº£¤Ï13.2Rel1¤Îarm-gcc¤ò»È¤Ã¤¿¤Û¤¦¤¬ÌµÆñ¤Ç¤¹¡Ä
¤É¤¦¤·¤Æ¤³¤ó¤Ê¤³¤È¤Ëorzorz



¡üÁȤ߹þ¤ß¸þ¤±¤ÎLTO¹Í»¡
¥ê¥ó¥¯»þºÇŬ²½(LinkTimeOptimization)¡£¤Í¤à¤¤¤µ¤ó¤Ï10ǯ°ÌÁ°¤Ë»È¤Ã¤¿ºÝ¤Ë
¥Ð¥°¤¬Â¿¤¯¤ÆÉõ°õ¤·¤Æ¤½¤ì¤Ã¤­¤ê¤Ç¤·¤¿¡£¤³¤³ºÇ¶á¤Ï¤É¤¦¤Ê¤Ã¤Æ¤¤¤ë¤Î¤«¿§¡¹
Ä´¤Ù¤Æ¤ß¤Þ¤·¤¿¤¬¡¢¤¢¤Î¤³¤í¤ÈÈæ¤Ù¤Æ¤«¤Ê¤êÍÍÊѤï¤ê¤·¤Æ¤ë¤Î¤¬¤ï¤«¤ê¤Þ¤·¤¿¡£

¤Þ¤º¤Ï¸ø¼°¤ÎLTO¤Î²òÀâ¤ò¤·¤Ã¤«¤ê¤ÈÆÉ¤ß¤È¤ª¤¹¤³¤È¡£
¤½¤Î¤¦¤¨¤ÇLTO¤Î¥Ó¥ë¥É¤òÀ®¸ù¤µ¤»¤ë¤¿¤á¤Ë¤Ï´ö¤Ä¤«¤Î¾ãÊɤ¬¤¢¤ê¤Þ¤·¤¿¡£

*FONTX2¤Î¥Õ¥¡¥¤¥ë¤òľÀܼè¤ê¹þ¤àincbin¤ÈÁêÀ­¤¬°­¤¤
LTO¤Ê¤·¤À¤È¥Ó¥ë¥É¤Ç¤­¤ë¤Î¤ËLTO¤Ä¤±¤ë¤È¥¢¥»¥ó¥Ö¥é¤Ç¥¨¥é¡¼ÅǤ¤¤Æ¤³¤±¤ë¡£
LTO¤Î¾ì¹ç¤Ïmakefile¤¬¤¢¤ë¤È¤³¤í¤«¤é¤Î¥Õ¥ë¥Ñ¥¹¤ò»ØÄꤷ¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£

makefile¤¬Â¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹¤ò»ØÄꤷ¤Ê¤ª¤¹¤³¤È¤Ç
¶ì¤·¤ßʶ¤ì¤ËÕû¤ò¤³¤¤¤¿¤è¤¦¤ÊÂкö¤Ç¤¹¤¬²¿¤È¤«Âнè¤Ç¤­¤Þ¤·¤¿¡£

*°ú¿ô¤â½ÅÍ×
¥Ó¥ë¥É»þ¤ËÍ¿¤¨¤ë°ú¿ô¤â"-flto"¤À¤±¤¸¤ã¥À¥á¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢»î¹Ôºø¸í¤·¤¿·ë²Ì
°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤òÁ´ÉôÄɲ乤뤳¤È¤ÇLTO¥Ó¥ë¥É¤òãÀ®¤Ç¤­¤Þ¤·¤¿¡£
-flto
-ffat-lto-objects
-fuse-linker-plugin
-flto-partition=none



STM32H5¤Î¥Ó¥ë¥É¥µ¥¤¥ºÈæ³Ó¤ò¤·¤Æ¤ß¤Þ¤·¤ç¤¦
LTO¤Ê¤·
Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 478260 0 478260 74c34 main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
476488 1772 39668 517928 7e728 main.elf

LTO¤¢¤ê
 Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 473372 0 473372 7391c main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
471608 1764 39672 513044 7d414 main.elf


5kByte¼åºï¸º¤Ç¤­¤Þ¤·¤¿¡£SRAM¾ÃÈñÎ̤âÈùÎ̤ʤ¬¤é¸º¤Ã¤Æ¤Þ¤¹¤Í¡£
¤â¤Á¤í¤óLTO¤¢¤ê¤Ç¤â¤Á¤ã¤ó¤È¥×¥í¥°¥é¥à¤Ïµ¡Ç½¤·¤Þ¤¹¡£
Â絬ÌÏ¥×¥í¥¸¥§¥¯¥È¤Ê¤Î¤Ç¸ú²Ì¤Ï´¶¤¸¤Å¤é¤¤¤Ç¤¹¤¬STM32C0¤È¤«¤Î
¾®µ¬ÌÏ¤Ê¥×¥í¥°¥é¥à¤Ê¤éºï¸º¸ú²Ì¤ò¤«¤Ê¤ê¼Â´¶¤Ç¤­¤ë¤È»×¤¤¤Þ¤¹¡£


¤¢¤È¥ê¥ó¥¯Ãʳ¬¤ÇÊѤʥ¥Ë¥ó¥°½Ð¤ë¤ó¤Ç¤¹¤±¤ÉÂоÝÊýË¡ÃΤäƤë¿Í¤¤¤¿¤é
¶µ¤¨¤Æ¤¯¤À¤Á¡£


¡ümbed¥µ½ª
¤Ä¤¤¤ËÍè¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤Í¡Ä
¤Í¤à¤¤¤µ¤ó¤â¤Û¤È¤ó¤É»ÈÍѤ·¤Ê¤¤¤Þ¤Þ¤³¤³¤Þ¤ÇÍè¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬
»þÂå¤ÎµØ²Ö¤È¤·¤Æ¿Í¡¹¤Îµ­²±¤Ë»Ä¤ë¤Ç¤·¤ç¤¦¡Ä(2026ǯ´°Á´½ªÎ»)¡£

¤Í¤à¤¤¤µ¤óŪ¤Ë¤Ï¥ª¥ó¥é¥¤¥ó¥³¥ó¥Ñ¥¤¥é¤Ï°µÅÝŪ¤ËÁêÀ­°­¤¯¤Æ¤ä¤Ã¤Ñ¤ê
PC¤ÇÉáÄ̤˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Î¤¬¿È¤Î¾æ¤Ë¹ç¤Ã¤Æ¤¤¤ë¤È´¶¤¸¤Þ¤·¤¿¡£


¡üSTLinkV3¤ÏSTÀ½°Ê³°¤Î¥Þ¥¤¥³¥ó¤òÇÓÀͤ¹¤ë¡ª¼Â¼ÁSTM32ÀìÍÑŽ¯¡ª
¤Þ¤Â¤Ç¤¹¤«¡Ä¡¢OpenOCD¤«¤é¤â»È¤¨¤Ê¤¤¤È¤Ï¡Ä¡ª
½©·î¤ÇÇä¤Ã¤Æ¤ë¤ä¤ÄÇã¤ï¤Ê¤¤¤Ç¤è¤«¤Ã¤¿¡Ä¡ª
¼Â¼ÁSTM32°Ê³°¤Î¾¼ÒÀ½¤ÎCortex-M¤Î¥Þ¥¤¥³¥ó¤Î¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ß¤Ï
¤ª¤í¤«¥³¥¢¤Ëconnect¤¹¤é¤Ç¤­¤Ê¤¤¤è¤¦¤Ç¤¹¡Ä¡£



°ìÊý¤Ç¼ê»ý¤Á¤ÎSTLink/V2·Ï¤ÏÂç¾æÉפʤΤ«¤É¤¦¤«¼ÂºÝ¤Ë³Îǧ¤·¤Æ¤ß¤Þ¤·¤¿¡£
»ÈÍѤ·¤¿¤Î¤Ï¤ª¤½¥í¥·¥¢¤ÎÎϤÇSWIM¤Ë̵Íý¤ä¤êÂбþ¤µ¤»¤¿STM32F0Discovery
ÉÕ°¤ÎSTLink/V2¤Ç¤¹¡ÄÁê¼ê¤Ïº£¤ÏË´¤­LPC810¤Ç¤¹¡ª

¤Þ¤º¤ÏHLA¤È¤·¤ÆÀܳ
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f interface/stlink-v2.cfg -c "transport select hla_swd" -f target/lpc81x_swd_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.12.0+dev-00682-gefe902219 (2024-08-12-08:52)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to interface/stlink.cfg
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
DEPRECATED! use 'gdb target_description', not 'gdb_target_description'
Info : clock speed 1000 kHz
Info : STLINK V2J45S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 2.905861
Info : [lpc81x.cpu] Cortex-M0+ r0p0 processor detected
Info : [lpc81x.cpu] target has 4 breakpoints, 2 watchpoints
Info : [lpc81x.cpu] Examination succeed
Info : [lpc81x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
[lpc81x.cpu] halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x1fff0008 msp: 0x10000ffc
Info : wrote 3072 bytes from file main.elf in 1.093837s (2.743 KiB/s)
Info : verified 3072 bytes in 0.055933s (53.636 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:01

¤ª¼¡¤ÏDAPDirect¤ÇÀܳ
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f interface/stlink-dap.cfg -c "transport select dapdirect_swd" -f target/lpc81x_swd_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.12.0+dev-00682-gefe902219 (2024-08-12-08:52)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
DEPRECATED! use 'gdb target_description', not 'gdb_target_description'
Info : STLINK V2J45S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 2.882555
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x0bc11477
Info : [lpc81x.cpu] Cortex-M0+ r0p0 processor detected
Info : [lpc81x.cpu] target has 4 breakpoints, 2 watchpoints
Info : [lpc81x.cpu] Examination succeed
Info : [lpc81x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
[lpc81x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0xf1000000 pc: 0x1fff0008 msp: 0x10000ffc
Info : wrote 3072 bytes from file main.elf in 1.219387s (2.460 KiB/s)
Info : verified 3072 bytes in 0.063133s (47.519 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:03



¥Õ¥¡¡¼¥à¤ÎVer¤Ï20240821ºÇ¿·¤ÎV2J45S7¤ò»ÈÍѤ·¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢
STLink/V2¤Î¥Ï¡¼¥É¥¦¥¨¥¢¤Ê¤é¾¼ÒÀ½Cortex-M¥Þ¥¤¥³¥ó¤Ç¤âÂç¾æÉפʤ褦¤Ç¤¹¤Í¡Ä


¡ü¤½¤·¤Æ¤Ñ¤Á¤â¤óSTLinkV2¤Ë¤â¥Ñ¥Á¥â¥óÂкö¤¬

¤Þ¤¡¤³¤ó¤Ê¤³¤Ã¤¿¤í¤¦¤È»×¤Ã¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ÁÆÀ½Íð¤¤Ç¹­¤Þ¤Ã¤Æ¤¤¤ëÃæ²ÚÀ½µ¶Êª
STLink/V2¤ò¸¡ÃΤ·¤¿¤é¥·¥ê¥¢¥ëÈÖ¹æ¤ò"C"¤Ë¤·¤Æ¤·¤Þ¤¦¥Õ¥¡¡¼¥à¥¦¥¨¥¢¤¬È¯Æ°
¤·¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£
STM32CubeProgrammer¤Ç¤Ï¤³¤Î¥·¥ê¥¢¥ë¤ò¤â¤Ä¤Ñ¤Á¤â¤óSTLink/V2¤¬
»ÈÍѤǤ­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

OpenOCD¤«¤é¤Ï¤Þ¤ÀÂç¾æÉפäݤ¤¤Ç¤¹¤¬¤³¤Á¤é¤â·ê¤¬¤Õ¤µ¤¬¤ì¤½¤¦¤Ç¤¹¤Í¡£


¤Á¤Ê¤ß¤Ë¤Í¤à¤¤¤µ¤ó¤¬STM8¥Þ¥¤¥³¥ó¤ÎÆÉ¤ß½ñ¤­¤¹¤ë¤¿¤á¤Ë¤ª¤½¥í¥·¥¢¤ÎÎϤò
»È¤Ã¤Æ²þ¤¤·¤¿STLink/V2¤Ï
¥·¥ê¥¢¥ëÈÖ¹æ¤Ï"C"¤Ç¤Ï¤Ê¤«¤Ã¤¿¤Î¤Ç¥»¡¼¥Õ¤Ç¤·¤¿¡£
¶²¤é¤¯Àµµ¬¤ÎSTM32¥Þ¥¤¥³¥ó¤ò»ÈÍѤ·¤Æ¤¤¤ë¤«Èݤ«¤ÇȽÊ̤·¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¤Í¡£

STM32H5¤ò»È¤Ã¤Æ¤ß¤ë4 -STM32L5¤Î»þ¤ß¤¿¤¤¤ËOCTO-SPI¤ò»È¤Ã¤Æ¤ß¤ë-

20240516ÄÉ:
½©·î¤µ¤ó¤è¤êNUCLEO-H563ZIÈÎÇ䳫»Ï¤Ç¤¹¡ª¡ª
20240516ÄÉ:



¤Ä¤¤ºÇ¶á¡¢STM32H7¥·¥ê¡¼¥º¤ËSTM32H7R/S¤È¤¤¤¦¤«¤Ê¤êÀí¤Ã¤¿Éʼ郎
Äɲ䵤ì¤Þ¤·¤¿¤¬»×¤¤½Ð¤·¤¿¤è¤¦¤ËSTM32H5¤ò¿¨¤Ã¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£

20240321ÄÉ:
STM32U0¥·¥ê¡¼¥º¤Ê¤ó¤Æ¤Î¤â½Ð¸½¤·¤Æ¤Þ¤·¤¿¡Ä¡ª¡ª
20240321ÄÉ:


º£²ó¤âSTM32H563ZI-NUCLEO¤ò»ÈÍѤ·¤¿FatFs¤Î°Ü¿¢¥Ç¥â¤Î¥½¡¼¥¹¥³¡¼¥É¤ò
»ÈÍѤ·¤Æ²òÀ⤷¤Æ¤¤¤­¤Þ¤¹¡£


¡üSTM32L5¤«¤é¿Ê²½¤·¤¿STM32H5¤ÎOCTO-SPI
STM32H5¤ÎOCTO-SPI¤Ï¥Ý¥Ô¥å¥é¡¼¤ÊQUADSPI-ROM¤À¤±¤Ç¤Ï¤Ê¤¯¡¢ºÇÂç
16bit¤Ê¥¯¥í¥Ã¥¯¥É¥·¥ê¥¢¥ëROM/PSRAM¤Ê¤ó¤«¤âÀܳ²Äǽ¤Ç¡¢¤â¤Á¤í¤ó
¥á¥â¥ê¥Þ¥Ã¥×¥É¤Ê¥¢¥¯¥»¥¹¤¬²Äǽ¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£
¥·¥ê¥¢¥ë¤Ê¤Î¤Ë16bit¤â¥Ñ¥é¥ì¥ë¤Ã¤Æ¤Ê¤ó¤Ê¤ó¤À¤è¤È¾ï¤Ë´¶¤¸¤Æ¤Þ¤¹¤¬
»þÂå¤Ï¾ï¤Ë¿Ê²½¤·¤Æ¤¤¤Ã¤Æ¤¤¤ë¤Ê¤ÈƱ¤¸¤¯´¶¤¸¤Æ¤ª¤ê¤Þ¤¹(º®Íð)¡£
sirius506¤µ¤ó¤Ï¤½¤ó¤ÊOCTO-SPI¤ò´°Á´¤Ë»È¤¤¤³¤Ê¤·DOOM¤È¤¤¤¦¥²¡¼¥à¤ò
°Ü¿¢¤µ¤ì¤Æ¤ª¤ê
¡¢¤Û¤ó¤È¤Ë´¶¿´¤·¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡Ä

¤Í¤à¤¤¤µ¤ó¤ÏÁȤ߹þ¤ß·Ï³¦·¨¤ÎÃæ¤Ç¤Ï»¨µû¥­¥ã¥é¤Ë²á¤®¤Ê¤¤¤Î¤Ç¤½¤ó¤Ê
¹âÅ٤ʤ³¤È¤Ï¤Ç¤­¤º¡¢´ðËÜÃæ¤Î´ðËܤÎQSPI-ROM¤òÀܳ¤·¤Æ¥á¥â¥ê
¥Þ¥Ã¥×¥É¥â¡¼¥É¤ÇÆÉ¤ß½Ð¤·ÀìÍÑ¤ÇÆ°¤«¤¹¤³¤È¤«¤é¤ä¤Ã¤Æ¤­¤Þ¤¹¡£

OCTO-SPI¤Ë¤Ä¤¤¤Æ¤ÏST¸ø¼°¤ÎAN5050¤â¤·¤Ã¤«¤ê½ÏÆÉ¤·¤Æ¤¯¤À¤µ¤¤¡£



¡üSTM32H5¤ÎOCTO-SPI¤ò¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤Çư¤«¤¹¥³¡¼¥É
°Ü¿¢¤ËÅö¤¿¤Ã¤Æ¤ÏSTM32L5¤Î¤ä¤Ä¤ò¤½¤Î¤Þ¤Þ¥¹¥é¥¤¥É°Ü¿¢¡Ä¤È¤¤¤¦¤ï¤±¤Ë¤Ï
´Êñ¤Ë¤¤¤«¤º¡¢L5¤ÎOCTO-SPI¤Î¥³¡¼¥É¤«¤é¾¯¤·²þÊѤ¬É¬ÍפǤ·¤¿¡£



¤½¤ÎÁ°¤Ë¡¢STM32H563ZI-NUCLEO¤ÇOCTO-SPI¤ò»È¤¦ºÝ¤ÏSB70¤ò¥¸¥ã¥ó¥Ñ¤·¤Æ
PE2(COTO-SPI IO2)¤ò³°Éô¤Ë°ú¤­½Ð¤»¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤Î¤ò˺¤ì¤Ê¤¤¤Ç
¤¯¤À¤µ¤¤¤Í¡£

¤½¤ì¤Ç¤ÏSTM32H5¤ÎOCTO-SPI¤Î¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤Ç»È¤¦¤¿¤á¤Î¥³¡¼¥É¤ò
¾Ò²ð¤·¤Þ¤¹¡£¤Þ¤º¤ÏI/O

/**************************************************************************/
/*!
@brief OCTO-SPI GPIO Configuration.
@param None.
@retval None.
*/
/**************************************************************************/
void OSPI_IoInit_If(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

/* Initializes the peripherals clock */
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_OSPI;
PeriphClkInit.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
for(;;);
}

/* Peripheral clock enable */
__HAL_RCC_OSPI1_CLK_ENABLE();

/* Alternate GPIO enable */
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOG_CLK_ENABLE();

/* PD11 as OSPI_IO0 */
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF9_OCTOSPI1;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

/* PD12 as OSPI_IO1 */
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Alternate = GPIO_AF9_OCTOSPI1;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

/* PE2 as OSPI_IO2(Need SB70 SolderBridge) */
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Alternate = GPIO_AF9_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

/* PD13 as OSPI_IO3 */
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Alternate = GPIO_AF9_OCTOSPI1;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

/* PB2 as OSPI_CLK */
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Alternate = GPIO_AF9_OCTOSPI1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

/* PG6 as OSPI_NCS */
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
}



¤ª¼¡¤ÏOCTO-SPI¤Î¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤Î½é´ü²½¤Ç¤¹¡£
/**************************************************************************/
/*!
@brief Configure OCTO-SPI as Memory Mapped Mode.
Winbond W25Q128JVSIQ specific setting.
* Address size is 24bit(16MBytes).
* Initially sets QUAD-MODE(not need quadmode command).
* MAX 133MHz CLK.
* Support "XIP",thus suitable for MemoryMappedMode.
@param None.
@retval None.
*/
/**************************************************************************/
void Set_OSPI_MemoryMappedMode(void)
{
XSPI_RegularCmdTypeDef sCommand = {0};
XSPI_MemoryMappedTypeDef sMemMappedCfg = {0};
uint8_t reg_data =0;

/* Initialize OCTO-SPI I/O */
OSPI_IoInit_If();

/* Initialize OCTO-SPI */
hxspi.Instance = OCTOSPI1;
hxspi.Init.FifoThresholdByte = 1;
hxspi.Init.MemoryMode = HAL_XSPI_SINGLE_MEM;
hxspi.Init.MemoryType = HAL_XSPI_MEMTYPE_MICRON;
hxspi.Init.MemorySize = 23; /* 128Mbit=16MByte=2^(23+1) W25Q128JVSIQ */
hxspi.Init.ChipSelectHighTimeCycle = 4; /* 4ClockCycle(16nSec@250MHzMAX) Need for W25Q128JVSIQ >10nSec@read */
hxspi.Init.FreeRunningClock = HAL_XSPI_FREERUNCLK_DISABLE;
hxspi.Init.ClockMode = HAL_XSPI_CLOCK_MODE_0;
hxspi.Init.WrapSize = HAL_XSPI_WRAP_NOT_SUPPORTED;
hxspi.Init.ClockPrescaler = 1; /* 250MHzMAX/(1+1) = 125MHz (Allowed SDR Clock is 150MHz@3.3V) */
hxspi.Init.SampleShifting = HAL_XSPI_SAMPLE_SHIFT_HALFCYCLE;
hxspi.Init.DelayHoldQuarterCycle = HAL_XSPI_DHQC_DISABLE;
hxspi.Init.ChipSelectBoundary = 0;
hxspi.Init.DelayBlockBypass = HAL_XSPI_DELAY_BLOCK_BYPASS;
hxspi.Init.Refresh = 0;
if (HAL_XSPI_Init(&hxspi) != HAL_OK)
{
for(;;);
}

/* Enable Reset --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_XSPI_OPTYPE_COMMON_CFG;
sCommand.IOSelect = HAL_XSPI_SELECT_IO_3_0;
sCommand.InstructionDTRMode = HAL_XSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDTRMode = HAL_XSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDTRMode = HAL_XSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_XSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytes = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesWidth = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesDTRMode = HAL_XSPI_ALT_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_XSPI_INSTRUCTION_1_LINE;
sCommand.InstructionWidth = HAL_XSPI_INSTRUCTION_8_BITS;
sCommand.AddressWidth = HAL_XSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x66; /* Reset Enable W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_XSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_XSPI_DATA_NONE;
sCommand.DataLength = 0;
sCommand.DummyCycles = 0;

if (HAL_XSPI_Command(&hxspi, &sCommand, HAL_XSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Reset Device --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_XSPI_OPTYPE_COMMON_CFG;
sCommand.IOSelect = HAL_XSPI_SELECT_IO_3_0;
sCommand.InstructionDTRMode = HAL_XSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDTRMode = HAL_XSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDTRMode = HAL_XSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_XSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytes = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesWidth = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesDTRMode = HAL_XSPI_ALT_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_XSPI_INSTRUCTION_1_LINE;
sCommand.InstructionWidth = HAL_XSPI_INSTRUCTION_8_BITS;
sCommand.AddressWidth = HAL_XSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x99; /* Reset W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_XSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_XSPI_DATA_NONE;
sCommand.DataLength = 0;
sCommand.DummyCycles = 0;

if (HAL_XSPI_Command(&hxspi, &sCommand, HAL_XSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Enter Quad-SPI Mode --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_XSPI_OPTYPE_COMMON_CFG;
sCommand.IOSelect = HAL_XSPI_SELECT_IO_3_0;
sCommand.InstructionDTRMode = HAL_XSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDTRMode = HAL_XSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDTRMode = HAL_XSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_XSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytes = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesWidth = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesDTRMode = HAL_XSPI_ALT_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_XSPI_INSTRUCTION_1_LINE;
sCommand.InstructionWidth = HAL_XSPI_INSTRUCTION_8_BITS;
sCommand.AddressWidth = HAL_XSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x31; /* Set Status2 W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_XSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_XSPI_INSTRUCTION_1_LINE;
sCommand.DataLength = 1;
sCommand.DummyCycles = 0;
reg_data = 0x02; /* Enable QuadI/O Mode */

if (HAL_XSPI_Command(&hxspi, &sCommand, HAL_XSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

if (HAL_XSPI_Transmit(&hxspi, ®_data, HAL_XSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Enter MemoryMappedMode --------------------------- */
/* Read Commands */
sCommand.OperationType = HAL_XSPI_OPTYPE_READ_CFG;
sCommand.IOSelect = HAL_XSPI_SELECT_IO_3_0;
sCommand.InstructionDTRMode = HAL_XSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDTRMode = HAL_XSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDTRMode = HAL_XSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_XSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_XSPI_ALT_BYTES_4_LINES;
sCommand.AlternateBytes = 0xFF; /* Need for Fast Read QUAD W25Q128JVSIQ */
sCommand.AlternateBytesWidth = HAL_XSPI_ALT_BYTES_8_BITS;
sCommand.AlternateBytesDTRMode = HAL_XSPI_ALT_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_XSPI_INSTRUCTION_1_LINE;
sCommand.InstructionWidth = HAL_XSPI_INSTRUCTION_8_BITS;
sCommand.AddressWidth = HAL_XSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0xEB; /* Fast Read QUAD W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_XSPI_ADDRESS_4_LINES;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_XSPI_DATA_4_LINES;
sCommand.DataLength = 0;
sCommand.DummyCycles = 4; /* DUMMY 4Cycle for Fast Read QUAD W25Q128JVSIQ */

if(HAL_XSPI_Command(&hxspi, &sCommand, HAL_XSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Write Commands */
sCommand.OperationType = HAL_XSPI_OPTYPE_WRITE_CFG;
sCommand.IOSelect = HAL_XSPI_SELECT_IO_3_0;
sCommand.InstructionDTRMode = HAL_XSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDTRMode = HAL_XSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDTRMode = HAL_XSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_XSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytes = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesWidth = HAL_XSPI_ALT_BYTES_NONE;
sCommand.AlternateBytesDTRMode = HAL_XSPI_ALT_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_XSPI_INSTRUCTION_1_LINE;
sCommand.InstructionWidth = HAL_XSPI_INSTRUCTION_8_BITS;
sCommand.AddressWidth = HAL_XSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x32; /* Page Write QUAD W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_XSPI_ADDRESS_1_LINE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_XSPI_DATA_4_LINES;
sCommand.DataLength = 0;
sCommand.DummyCycles = 0;

if(HAL_XSPI_Command(&hxspi, &sCommand, HAL_XSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Set OCTO-SPI as MemoryMappedMode */
sMemMappedCfg.TimeOutActivation = HAL_XSPI_TIMEOUT_COUNTER_DISABLE;
sMemMappedCfg.TimeoutPeriodClock = 0;
if(HAL_XSPI_MemoryMapped(&hxspi, &sMemMappedCfg) != HAL_OK)
{
for(;;);
}

}


STM32H5¤ÎOCTO-SPI¤ÎHAL¤ÏL5¤ÈÈù̯¤Ë°ã¤Ã¤Æ¤ª¤ê"HAL_OSPI"¤À¤Ã¤¿¤Î¤¬
"HAL_XSPI"¤ËÊѤï¤Ã¤Æ¤¿¤ê¤·¤Æ°Ü¿¢¤ÎºÝ¤á¤Ã¤Á¤ãݵƫ¤·¤«¤Ã¤¿¤Î¤Ç¤¹¤¬
´ðËÜŪ¤ÊÀßÄê¤Îή¤ì¤ÏL5¤Î»þ¤È¤½¤³¤Þ¤ÇÊѤï¤Ã¤Æ¤ª¤ê¤Þ¤»¤ó¡£

ÆÃÉ®¤¹¤Ù¤­¤ÏSTM32H5¤Ï250MHz¤Çưºî¤¹¤ë¤Î¤ÇW25Q128JVSIQ(ºÇÂç133MHz)
¤ËÂФ·¤Æ125MHz¤È¤¤¤¦²á·ã¤Ê¥¹¥Ô¡¼¥É¤Î¥¯¥í¥Ã¥¯¤¬¶¡µë²Äǽ¤ÇÈó¾ï¤Ë¹â®¤Ê
ưºî¤¬²Äǽ¤Ç¤¹¡ª¤·¤«¤â¥Ç¡¼¥¿¥­¥ã¥Ã¥·¥å¤â¤Ä¤¤¤Æ¤Þ¤¹¡ª

¤Á¤Ê¤ß¤ËSTM32H5¤ÎOCTO-SPI¤ÎºÇÂç¶¡µë¥¯¥í¥Ã¥¯¤Ï150MHz(3.3V»þ)¤Þ¤Ç
²Äǽ¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£

¡ü¼ÂºÝ¤Ëư¤«¤·¤Æ¤ß¤ë
¤Æ¤¤¤¦¤«¥Ý¥ê¥¦¥ì¥¿¥óÈïʤƼÀþ¤ÇQSPI-ROM¤ØÇÛÀþ°ú¤­¿­¤Ð¤·¤Æ¤Û¤ó¤È¤Ë
125MHz¤Çư¤¤¤Æ¥ó¤Î¤«¤È¼«Ê¬¤Ç¤âëä·¤ó¤Ç¤¤¤Þ¤·¤¿¤Î¤Ç¼ÂºÝ¤Ë¥¯¥í¥Ã¥¯¤Î
ÇÈ·Á¤ò¬Äꤷ¤Æ¤ß¤Þ¤·¤¿¡£
»ÈÍѤ·¤¿¥ª¥·¥í¤ÏPicoscope5444D MSO¤Ç¤¹¡£¤½¤¦¤À¤ÍÀëÅÁ¤À¤Í¡£


Picoscope5444D MSO¤Î¥¢¥Ê¥í¥°ÂÓ°è200MHz¤Ê¤Î¤Ë125MHz¤Î¹â®¿®¹æÂ¬¤ë¤Î
¤É¤¦¤Ê¤Î¤È¤ª»×¤¤¤Ç¤·¤ç¤¦¤¬Â¬Äê¸Â³¦¤òÂçÉý¤Ëͤ¨¤Æ¤¤¤Þ¤¹¤¬ETS¥â¡¼¥É¤Ç
¬Äꤷ¤¿¸Â¤ê¤Ç¤Ï¤­¤Ã¤Á¤ê125MHz¤Î¥¯¥í¥Ã¥¯¤¬½Ð¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£


¤Í¤à¤¤¤µ¤ó¤ÏQSPI-ROM¤òFONTX2¤ò³ÊǼ¤¹¤ë¤Î¤Ë»È¤Ã¤Æ¤¤¤Þ¤¹¤¬¤³¤ó¤Ê´¶¤¸¤Ç
ʸ»úÊø¤ì¤âµ¯¤³¤µ¤º¤­¤ì¤¤¤Ëɽ¼¨¤Ç¤­¤Æ¤ª¤ê¤Þ¤¹¡ª

¼êÇÛÀþ¤Î¸Â³¦¤ËÄ©¤ó¤À´¶¤¸¤Ç¤¹¤¬¤Þ¤¡SCLK¤Ï°ì±þ33ohm¤ÇľÎó½ªÃ¼¤Ï
¤·¤Æ¤¤¤ë¤Î¤Ç¤½¤ì¤¬¸ú¤¤¤Æ°ÂÄꤷ¤ÆÆ°ºî¤·¤Æ¤¤¤ë¤Î¤Ç¤·¤ç¤¦¡Á¡£



¡ü¤ª¤Þ¤±¡¦STM32L5¤È¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹Èæ³Ó
¤»¤Ã¤«¤¯²¼ÂÌ´ðÈĺî¤Ã¤Æ¥Ï¡¼¥ÉŪ¤ËƱ¤¸¾ò·ï¤¬Â·¤¨¤Æ¤ë¤Î¤ÇSTM32L5¤È
STM32H5¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹Èæ³Ó¤È¤«¤ä¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
Ʊ°ì¤Îpng¥Õ¥¡¥¤¥ë¤Çlibpng¤ò»È¤Ã¤¿¥Ç¥³¡¼¥É»þ´Ö¤òÈæ³Ó¤·¤Æ¤ß¤Þ¤·¤¿¡£

☝STM32L5¤Î¾ì¹ç(ưºî¥¯¥í¥Ã¥¯:110MHz)

☝STM32H5¤Î¾ì¹ç(ưºî¥¯¥í¥Ã¥¯:250MHz)
¤¦¡Á¤à¤ä¤Ï¤ê°µÅÝŪ¤Ë°ã¤¤¤Þ¤¹¤Í¡Á¤È¤¤¤¦¤«¤Í¤à¤¤¤µ¤ó¤¬STM32H5¤Î
¥Ñ¥ï¡¼¤ò»ý¤ÆÍ¾¤·¤Æ¤Æ¤Þ¤À¤Þ¤Àµ¡Ç½¤Î°ì°®¤ê¤â»È¤¨¤Æ¤Ê¤¤¤Î¤Ç´èÄ¥¤Ã¤Æ
»È¤¤¤³¤Ê¤·¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡ª¤³¤ì¤«¤é¤â´èÄ¥¤ë¤¾¤¤¡ª

¤¤¤í¤¤¤í»î¤¹60

¤¤¤í¤¤¤í»î¤·¤Æ¤­¤Æ¤Ä¤¤¤Ë60²ó¤ò·Þ¤¨¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬
¤Û¤ó¤Ã¤ÈÂ礷¤¿¤³¤È¤ä¤Ã¤Æ¤Þ¤»¤ó¤Í¡Ä



¡ü¤Ö¤í¤°¤Î²èÁü¤Î½¤Àµ¤¹¤Ù¤Æ´°Î»¤Î·ï
2016ǯ¤«¤é¤Ï¤ä7ǯ¤â·Ð²á¤·¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬dropbox¤Î»ÅÍÍÊѹ¹¤Î¤¢¤ª¤ê¤ò
¼õ¤±¤ÆÉ½¼¨¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿²èÁü¤Ç¤¹¤¬¤¹¤Ù¤Æ½¤Àµ¤¬´°Î»Ãפ·¤Þ¤·¤¿¡ª¡ª

Ť«¤Ã¤¿¡Ä°ìÈÖ¤·¤ó¤É¤«¤Ã¤¿¤Î¤ÏÅ쳤¼«Á³ÊâÆ»¤äÅл³´ØÏ¢¤ÎĶÂçÎ̤Î
²èÁü¤Îº¹¤·Âؤ¨ºî¶È¤Ç¤·¤¿¤¬¤Ê¤ó¤È¤«¤¹¤Ù¤Æ¤³¤Ê¤¹¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡Ä
¤â¤¦10ǯ°Ê¾åÁ°¤Ë¤Ê¤ë¤â¤Î¤â¤¢¤Ã¤ÆËÜÅö¤Ëǯ·î¤ò´¶¤¸¡Ä
¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¡ª¡ª¡ª¡ª£±£±£±¡ª¡ª¡ª£±



¸½ºß¤ÏEDGE¤Ç¸«¤¿ºÝ¤Ëɽ¼¨¤¬Êø¤ì¤Ê¤¤¤è¤¦¤Ë¥ì¥¤¥¢¥¦¥È¤Î½¤Àµ¤òºÙ¡¹¤È
¹Ô¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£
¤æ¤¯¤æ¤¯¤Ïwordpress¤Ë°Ü¹Ô¤ò¹Í¤¨¤Æ¤ª¤ê¤Þ¤¹¤¬¡Ä²¿Ç¯¸å¤«¤Ê¡Ä¡©


¡üWindows10°Ê¹ßÂбþ¤Î64bitÈÇFONTX2¥³¥ó¥Ð¡¼¥¿ºî¤ê¤Þ¤·¤¿
FONTX2¤Ï¸½ºß¤Ç¤ÏÅŻҹ©ºî¤ÇÂç¿Íµ¤¤Î¥Õ¥©¥ó¥È¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£
¾Ü¤·¤¤²òÀâ¤Ï¤ª¤Ê¤¸¤ßChaN»Õ¤Î¥µ¥¤¥È¤Ç¤â¤µ¤ì¤Æ¤ª¤ê»²¹Í¤Ë¤Ê¤ê¤Þ¤¹¡£

¤È¤³¤í¤Ç¸½ºßWindows¤Ç»È¤ï¤ì¤Æ¤¤¤ëTrueType¥Õ¥©¥ó¥È¤«¤éFONTX2¥Õ¥¡¥¤¥ë¤ò
ºîÀ®¤·¤¿¤¤¾ì¹ç¤Ï¤«¤Ä¤Æ¤ÏWFONTX¤È¤¤¤¦Èó¾ï¤ËÊØÍø¤Ê¥Ä¡¼¥ë¤¬Â¸ºß¤·¤Æ
¤¤¤¿¤Î¤Ç¤¹¤¬¤³¤ì¤ÏWindowsNT3.1ÍѤÎÂåʪ¤Ç¡¢64bitOS¤¬Á´À¹¤Î¸½ºß¤Ç¤Ï
ưºî¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

¤½¤³¤Ç¤Í¤à¤¤¤µ¤ó¤¬64bitOSÂбþ¤ÎWFONTX64¤òºîÀ®¤¤¤¿¤·¤Þ¤·¤¿¡ª
¤³¤ì¤Ï¥ª¥ê¥¸¥Ê¥ë¤«¤éXP¤ËÂбþ¤µ¤ì¤¿¤¹¤óÍͤÎWFONTX32¤ò¥Ù¡¼¥¹¤È¤·¤Æ¤ª¤ê¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤¬¸«¤Ä¤±¤¿ºÙ¤«¤¤¥Ð¥°Åù¤â½¤Àµ¤·»È¤¤¾¡¼ê¤ò¿¾¯¾å¤²¤Þ¤·¤¿¡£


¡ù»È¤¤Êý¡ù

¤Þ¤º¤Ï¥×¥í¥°¥é¥à¤ò³«¤¤¤¿¤È¤³¤í¤Ç¤¹¡£
¤³¤³¤Ç¤Ï¤Í¤à¤¤¤µ¤ó¤ÎºÇ¶á¤Î¤ªµ¤¤ËÆþ¤ê¤Î¾®²Æ¥Õ¥©¥ó¥È¤ò12x12pixel¤Î
FONTX2²½¤¹¤ëÎã¤òµó¤²¤Þ¤¹¡£

Ãí:¤¢¤é¤«¤¸¤á¾®²Æ¥Õ¥©¥ó¥È¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ë¤Î¤¬Á°Äó¤Ç¤¹¡ª

¥É¥í¥Ã¥×¥À¥¦¥ó¥á¥Ë¥å¡¼¤«¤é"¾®²Æ ÅùÉý"¤òÁªÂò¤·¤Þ¤¹¡£


¼¡¤Ë¹â¤µ¤ÈÉý¤ò¥Ô¥¯¥»¥ë¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£¤³¤³¤ÇÃí°Õ¤Ç¤¹¤¬¤¿¤È¤¨¤Ð12x12¤Ç
ɽ¼¨¤·¤¿¤¤¾ì¹ç¤ÏHeight¤Ë12,Width¤ËHeight¤ÎȾʬ¤Î6¤ò»ØÄꤷ¤Þ¤¹¡£


Width¤Ë12¤ò¤·¤Æ¤·¤Þ¤¦¤È²£Ä¹¤Ë¤Ê¤Ã¤Á¤ã¤¤¤Þ¤¹¡£
12¤ÎȾʬ¤Î6¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£


"FontX2 Name"¤ÎÍó¤Ë¤ÏFONTX2¤Î¥Ø¥Ã¥À¤ò»ØÄꤷ¤Þ¤¹¡£FONTX2¤Î»ÅÍ;å8ʸ»ú
°Ê¾å¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó(8ʸ»ú°Ê¾åÆþÎϤǤ­¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤Þ¤¹)¡£
¤³¤³¤Ç¤ÏKONATHN¤È¤·¤Þ¤¹¡£
¤Þ¤¿¡¢FontX2Type¤ÏȾ³Ñ¤Î"Ank"¤ò»ØÄꤷ¤Þ¤¹¡£


Save Name¤ÎÍó¤ÏÀ¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Þ¤¹¡£
KONATHN12.FNT¤È¤·¤Þ¤¹¡£

¤³¤³¤Þ¤ÇÆþÎϤ·¤¿¤é"RUN"¤È"NO STOP"¤¬²¡¤»¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
"RUN"¤Ï¥À¥¤¥¢¥í¥°¤Ë1ʸ»ú¤º¤Äɽ¼¨¤·¤Ê¤¬¤éÊÑ´¹(ÃÙ¤¤)¡¢"NO STOP"¤Ïɽ¼¨
¤»¤º¤Ë°ìµ¤¤ËÊÑ´¹¤·¤Þ¤¹(Áᤤ)¡£


ÊÑ´¹¤¬½ª¤ï¤ë¤ÈKONATHN12.FNT¤¬À¸À®¤µ¤ì¤Þ¤¹¡£
À¸À®¤µ¤ì¤¿¤Î¤ÏFONTX2¤ÎÃæ¤ÎAnk¥Õ¥©¥ó¥È¤ÇȾ³Ñ¤ÎAsciiʸ»ú¤À¤±¤¬
³ÊǼ¤µ¤ì¤Æ¤Þ¤¹¡£´Á»ú¤Ê¤É¤Î2¥Ð¥¤¥Èʸ»ú¤ÏÁ´³ÑÍѤÎÀ¸À®Áàºî¤¬
ɬÍפǤ¹¡£


¤ª¼¡¤Ï2¥Ð¥¤¥È¤ÎÁ´³Ñ¤Ç¤¹¡£¥é¥¸¥ª¥Ü¥¿¥ó¤òAnk¤«¤éKanji¤ËÊѤ¨¡¢
Save Name¤ÏKONATZN12.FNT¤È¤·¤Þ¤·¤ç¤¦¡£


¤³¤ì¤ÇȾ³Ñ¡¦Á´³Ñ¤ÎFONTX2¥Õ¥¡¥¤¥ë¤¬Ìµ»öÀ¸À®¤µ¤ì¤Þ¤·¤¿¡ª


¤Ç¡¢¤³¤¤¤Ä¤ò¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î¤ËÁȤ߹þ¤ó¤ÇSTM32H5»È¤Ã¤ÆTFT-LCD¤Ë
FONTX2¥É¥é¥¤¥Ð¤ò»È¤Ã¤ÆÉ½¼¨¤Ç¤­¤Þ¤·¤¿¡£


¤³¤ó¤Ê¤ï¤±¤Ç30ǯ¤Î»þ¤òͤ¨¤Æ¸½ºß¤Ç¤â¤ª¼ê·Ú¤Ë¥Þ¥¤¥³¥ó¤Ç¹¥¤­¤Êʸ»ú¤¬
¤ª¼ê·Ú¤Ëɽ¼¨¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£
¤Þ¤¿¡¢À¸À®¤·¤¿FONTX2¥Õ¥¡¥¤¥ë¤ò´Þ¤à¥½¡¼¥¹¥³¡¼¥É¤ÎºÆÇÛÉۤκݤϸµ¤Î
¥Õ¥©¥ó¥È¤Î¥é¥¤¥»¥ó¥¹¤ËÃí°Õ¤·¡¢¤½¤ì¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£




¡üavrdude¤¬v7.2¤Ë¤Ê¤Ã¤Æ¤¤¤¿

µµ¤Î¤è¤¦¤Ê¹¹¿·Â®ÅÙ¤À¤Ã¤¿¤³¤í¤«¤éÈæ¤Ù¤ë¤ÈÆü¡¹Áý¿£¤¹¤ë¾®±§Ãè¾õÂÖ¤È
¤Ê¤Ã¤Æ¤¤¤ëavrdude¤Ç¤¹¤¬¤¤¤Ä¤Î¤Þ¤Ë¤«v7.1->v7.2¤Ë¿Ê²½¤·¤Æ¤ª¤ê¤Þ¤¹¡£

¾Ò²ð¤·¤­¤ì¤Ê¤¤¤¯¤é¤¤µ¡Ç½¤¬¥¢¥Ã¥×¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤ÇÆÃ¤ËºÙ¤«¤¤ÉÔ¶ñ¹ç¤¬
¤Ä¤Ö¤µ¤Ë½¤Àµ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¤Î¤ÇÆÃ¤ËÍýͳ¤¬¤Ê¤¤¾ì¹ç°Ê³°¤Ïv7.2¤Ë¾è¤ê
ÊѤ¨¤Þ¤·¤ç¤¦¡£

¤Í¤à¤¤¤µ¤ó¤âVerup¤Î¥¹¥Ô¡¼¥É¤Ë¿¶¤êÍî¤È¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤¬¤ß¤Ä¤¤¤Æ¤ª¤ê¡¢
¤ª¤­¤Ñ¤Ç¤â¾ï¤ËºÇ¿·¤Îavrdude¤Îwindows¥Ð¥¤¥Ê¥ê¤ò¸ø³«¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç

¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡ª¡ª


¡üCMSIS¤âv6¤Ë¤Ê¤Ã¤Æ¤¤¤¿

10ǯ¤Û¤É¤Î´ÖCMSIS¤Ïver5¤Î¤Þ¤Þ¥á¥ó¥Æ¤¬¹Ô¤ï¤ì¤Æ¤ª¤ê¤Þ¤·¤¿¤¬º£Ç¯¤Î
½Õ¤¯¤é¤¤¤«¤éver6¤Ë°Ü¹Ô¤·¤Æ¤ª¤ê¤Þ¤¹¡£

Âç¤Þ¤«¤Ê¹½À®¤ÏÊѤï¤Ã¤Æ¤ª¤ê¤Þ¤»¤ó¤Î¤Ç¤½¤Î¤Þ¤ÞÃÖ¤­´¹¤¨¤Æ¥Ó¥ë¥É¤¬
²Äǽ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£

¤³¤Îµ­»ö¤ò½ñ¤¤¤Æ¤ë¸½ºß¤Ç¤Ï½¤Àµ¤µ¤ì¤Þ¤·¤¿¤¬GCC¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿ºÝ¤Ë
"#pragma clang system_header"¤¬°ú¤Ã¤«¤«¤Ã¤Æ¥ï¡¼¥Ë¥ó¥°¤¬½Ð¤Þ¤¯¤ë
»öÂ֤ȤʤäƤª¤ê¤Þ¤·¤¿¤¬10·îËö¤Ë¤è¤¦¤ä¤¯½¤Àµ¤µ¤ì¤Þ¤·¤¿¡£
¤ª¤­¤Ñ¤Ç¾Ò²ð¤·¤Æ¤¤¤ë¤¤¤Ä¤â¤Î¤¿¤Á¤Ï¤½¤Î½¤Àµ¤µ¤ì¤¿¤â¤Î¤òŬÍѤ·¤Æ¤Þ¤¹¤Î¤Ç
¤³¤Á¤é¤â¤É¤·¤É¤·¤´ÍøÍѤ¯¤À¤µ¤¤¡ª


¡ü¤½¤ÎGCC¤â13¤Ë¤Ê¤Ã¤Æ¤¤¤¿
¤½¤·¤ÆGCC¤â12¤«¤é13¤Ë¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤·¤Æ¤ª¤ê¤Þ¤·¤¿¡£

arm-none-eabi-gcc (Arm GNU Toolchain 12.3.Rel1 (Build arm-12.35)) 12.3.1 20230626

->
arm-none-eabi-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009



¤Í¤à¤¤¤µ¤ó¤ÎSTM32H7-Discovery¸þ¤±¥×¥í¥¸¥§¥¯¥È"¤¤¤Ä¤â¤Î"¤Î¥Ð¥¤¥Ê¥ê¥µ¥¤¥º¤ò
Èæ³Ó¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

GCC12
Built Informations:
USING_SYSTEM = BARE_METAL
USING_DISPLAY = USE_OTM8009A_DSI_TFT
USING_DEVBOARD = USE_STM32H747I_DISCO

Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 709212 0 709212 ad25c main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
707324 1888 2384060 3093272 2f3318 main.elf
main.elf :
section size addr
.text 0xac840 0x8000000
.ctors 0x0 0x80ac840
.dtors 0x0 0x80ac840
.eh_frame 0xb0 0x80ac840
.ARM.exidx 0x98 0x80ac8f0
.itcm 0x174 0x0
.data 0x760 0x24000000
.bss 0x11f2c 0x24000760
.heap 0x0 0x2401268c
.dtcm 0x20c 0x20000000
.stack 0x4 0x2000020c
.ram1_d2 0x0 0x30000000
.ram2_d2 0x0 0x30020000
.ram3_d2 0x0 0x30040000
.ram4_d3 0x0 0x38000000
.batram 0x0 0x38800000
.extram 0x233f80 0xd0000000
.qspirom 0x0 0x90000000
.comment 0x45 0x0
.debug_frame 0x1f7c 0x0
.ARM.attributes 0x30 0x0
.debug_line_str 0x1f4 0x0
Total 0x2f54fd

GCC13
Built Informations:
USING_SYSTEM = BARE_METAL
USING_DISPLAY = USE_OTM8009A_DSI_TFT
USING_DEVBOARD = USE_STM32H747I_DISCO

Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 709868 0 709868 ad4ec main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
707980 1888 2384060 3093928 2f35a8 main.elf
main.elf :
section size addr
.text 0xacad0 0x8000000
.ctors 0x0 0x80acad0
.dtors 0x0 0x80acad0
.eh_frame 0xb0 0x80acad0
.ARM.exidx 0x98 0x80acb80
.itcm 0x174 0x0
.data 0x760 0x24000000
.bss 0x11f2c 0x24000760
.heap 0x0 0x2401268c
.dtcm 0x20c 0x20000000
.stack 0x4 0x2000020c
.ram1_d2 0x0 0x30000000
.ram2_d2 0x0 0x30020000
.ram3_d2 0x0 0x30040000
.ram4_d3 0x0 0x38000000
.batram 0x0 0x38800000
.extram 0x233f80 0xd0000000
.qspirom 0x0 0x90000000
.comment 0x44 0x0
.debug_frame 0x1d1c 0x0
.ARM.attributes 0x30 0x0
.debug_line_str 0x1f4 0x0
Total 0x2f552c



¤¢¤ì¡Ä¤Ê¤ó¤«¥Ð¥¤¥Ê¥ê¥µ¥¤¥º¤¬600Byte¶á¤¯¤âÁý¤¨¤Æ¤ë¤è¤¦¤Ê¡Ä


¤È¡¢¤È¤ê¤¢¤¨¤ºÂ®ÅÙÈæ³Ó¤â¤·¤Æ¤ß¤Þ¤·¤ç¤¦
jpeg¥Õ¥¡¥¤¥ë¤Î¥Ç¥³¡¼¥É®ÅÙ¤òÈæ³Ó¤·¤Þ¤¹¡£-O2¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤·¤¿¡£


GCC12:(236704uSec)


GCC13:(237486uSec)

¡Ä
¤¢¡Ä¤¢¤ì¡Ä·ë¹½ÃÙ¤¯¤Ê¤Ã¤Æ¤ë¡Ä¡ª¡©

¤Þ¡¢¤Þ¤¡Â¿Ê¬²¿¤«¤Î°ÂÄêÀ­¤¬¾å¤¬¤Ã¤¿¤«¤â¤Ê¤Î¤Ç¤è¤·¤È¤·¤Þ¤·¤ç¤¦¡Ä
(»é´À)

STM32L5¤ò»È¤Ã¤Æ¤ß¤ë3 -OCTO-SPI¤ÇQUAD-SPIROM¤ò»È¤ª¤¦-

¡üQUAD-SPIÀܳNORFLASH-ROM¤ò»È¤¤¤³¤Ê¤»!
FONTX2¥Õ¥¡¥¤¥ë¤Ê¤É¤ÎÂçÍÆÎ̤Υǡ¼¥¿¤ÏSTM32Åù¤ÎÂ絬ÌÏ¥Þ¥¤¥³¥ó¤È
¤¤¤¨¤É¤â¥Õ¥é¥Ã¥·¥åÍÆÎ̤òÈó¾ï¤Ë¤Ò¤ÃÇ÷¤·¤Þ¤¹¡£
°ÊÁ°¤«¤é¤Ï¤½¤¦¤¤¤Ã¤¿¥Ç¡¼¥¿¤Ï³°ÉÕ¤±¤ÎQSPI-ROM¤Ë³ÊǼ¤·¡¢¤½¤³¤«¤é
¥¢¥¯¥»¥¹¤¹¤ë¤È¤¤¤Ã¤¿¼êË¡¤¬ÄêÈ֤ȤʤäƤª¤ê¤Þ¤¹¡£

STM32L5¤Ç¤Ï¿®¹æÀþ¤òºÇÂç8ËÜ»ý¤Ä¥¯¥í¥Ã¥¯¥É¥·¥ê¥¢¥ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
¤¤¤ï¤æ¤ë"OCTO-SPI"¤ò¤â¤Á¤µ¤é¤ËÍøÊØÀ­¤¬¹â¤Þ¤Ã¤Æ¤ª¤ê¤Þ¤¹¡ª
¤³¤ÎOCTO-SPI¤ò»È¤Ã¤ÆQSPI-ROM¤ÈÀܳ¤·Æâ¢¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¤Î¤è¤¦¤Ë
»È¤¨¤ëMemoryMappedMode¤ÇÆÉ¤ß½Ð¤·¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡ª


¡ü¤â¤Ï¤äÄêÈÖ¡ùWinbond¤ÎW25Q128JVSIQ

Á°¡¹²ó¤«¤é¤Î¾Ò²ð¤ÎÄ̤ꡢ¤Í¤à¤¤¤µ¤ó¤ÏÆþ¼ê¤âÍÆ°×¤Ç½½Ê¬¤ÊÍÆÎÌ(16MB)¡¢
¹â®¤Ê¥¯¥í¥Ã¥¯(133MHz)¤Ç¥Ç¥Õ¥©¥ë¥È¤ÇQUAD-SPI¥â¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤Æ
¥³¥Þ¥ó¥É¤¬¾Êά½ÐÍè¤Æ°·¤¤¤ä¤¹¤¤W25Q128JVSIQ¤ò»ÈÍѤ·¤Þ¤·¤¿¡£

W25Q¤Î¥·¥ê¡¼¥º¤Ë¤Ï¤¤¤í¤¤¤í¤¢¤ê¤Þ¤¹¤¬ËöÈø"IQ"¤Î¤â¤Î¤Ï¾å¤Ç¤â
½ñ¤¤¤¿Ä̤êºÇ½é¤Ã¤«¤éQUAD-SPI¥â¡¼¥É¤Ë¤Ê¤Ã¤Æ¤ª¤êº£¤«¤é¾Ò²ð¤¹¤ë
¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤ÇÅꤲ¤ë¥³¥Þ¥ó¥É¤¬¤¤¤¯¤Ä¤«¾Êά½ÐÍè¤Æ³Ú¤Ç¤¹¡£
digikey¤ämouser¤Ç¹ØÆþ¤ÎºÝ¤Ï¤¦¤Ã¤«¤ê°ã¤¦¤ä¤Ä¤òÇã¤ï¤Ê¤¤¤è¤¦¤Ë
·¿È֤ˤÏÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£


¡üOCTO-SPI¤òMemoryMappedMode¤Ç»ÈÍѤ¹¤ë¤¿¤á¤Î¥³¡¼¥É¼ê½ç
STM32L5¤ËÅëºÜ¤µ¤ì¤Æ¤¤¤ëOCTO-SPI¤ÏSTM32F7¤Ê¤É¤Ë¤¢¤Ã¤¿QUAD-SPI
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤«¤é¤µ¤ì¤Ë³ÈÄ¥¤µ¤ì¡¢ÆÉ¤ß½Ð¤·¤Î¤Û¤«¤Ë½ñ¤­¹þ¤ß¤â
¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£´ðËÜŪ¤ÊÀßÄê¤Îή¤ì¤ÏQUAD-SPI¤Îº¢¤È¤Û¤Ü
Ʊ¤¸¤Ç¤¹¤¬OCTO-SPI¤Ê¤é¤Ç¤Ï¤ÎÀßÄê¤â¤¢¤ë¤Î¤ÇÃí°Õ¤·¤Þ¤·¤ç¤¦¡£

¢­¤Þ¤º¤ÏI/OÀßÄê¤Ç¤¹¡£

/**************************************************************************/
/*!
@brief OCTO-SPI GPIO Configuration.
@param None.
@retval None.
*/
/**************************************************************************/
void OSPI_IoInit_If(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

/* Initializes the peripherals clock */
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_OSPI;
PeriphClkInit.OspiClockSelection = RCC_OSPICLKSOURCE_SYSCLK;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
for(;;);
}

/* Peripheral clock enable */
__HAL_RCC_OSPI1_CLK_ENABLE();

/* Alternate GPIO enable */
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();

/* PE12 as OSPI_IO0 */
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

/* PB0 as OSPI_IO1 */
GPIO_InitStruct.Pin = GPIO_PIN_0;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

/* PE14 as OSPI_IO2 */
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

/* PE15 as OSPI_IO3 */
GPIO_InitStruct.Pin = GPIO_PIN_15;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

/* PB10 as OSPI_CLK */
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

/* PA2 as OSPI_NCS */
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Alternate = GPIO_AF10_OCTOSPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

¤³¤ì¤ÏNUCLEO-L552ZE-Q¤«¤é½Ð¤¿QUAD-SPI¤Î­¤ËÂбþ¤·¤¿¤â¤Î¤Ç¤¹¡£
OCTO-SPI¤Ê¤Î¤Ë8ËÜÁ´Éô»È¤ï¤Ì¤§¤Î¤«¤È»×¤¤¤Ç¤·¤ç¤¦¤¬¤³¤ì¤ÏNUCLEO
¤¬°ú¤­½Ð¤·¤Æ¤ë­¤¬¤½¤¦¤Ê¤Ã¤Æ¤ë¤«¤é¤½¤ì¤Ë½¾¤Ã¤¿¤ï¤±¤Ê¤Î¤Ç¡¼

¢­¤ª¼¡¤ÏOCTO-SPI¤ÎÀßÄê¤Ç¤¹¡£
/**************************************************************************/
/*!
@brief Configure OCTO-SPI as Memory Mapped Mode.
Winbond W25Q128JVSIQ specific setting.
* Address size is 24bit(16MBytes).
* Initially sets QUAD-MODE(not need quadmode command).
* MAX 133MHz CLK.
* Support "XIP",thus suitable for MemoryMappedMode.
@param None.
@retval None.
*/
/**************************************************************************/
void Set_OSPI_MemoryMappedMode(void)
{
OSPI_RegularCmdTypeDef sCommand = {0};
OSPI_MemoryMappedTypeDef sMemMappedCfg = {0};
uint8_t reg_data =0;

/* Initialize OCTO-SPI I/O */
OSPI_IoInit_If();

/* Initialize OCTO-SPI */
hospi.Instance = OCTOSPI1;
hospi.Init.FifoThreshold = 1;
hospi.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;
hospi.Init.MemoryType = HAL_OSPI_MEMTYPE_MICRON;
hospi.Init.DeviceSize = 24; /* 128Mbit=16MByte=2^24 W25Q128JVSIQ */
hospi.Init.ChipSelectHighTime = 2; /* 2ClockCycle(18nSec@110MHz) Need for W25Q128JVSIQ >10nSec@read */
hospi.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;
hospi.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;
hospi.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED;
hospi.Init.ClockPrescaler = 2; /* 110MHzMAX/2 = 55MHz(MAX OSPI-CLK:90MHz) */
hospi.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_HALFCYCLE;
hospi.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_DISABLE;
hospi.Init.ChipSelectBoundary = 0;
hospi.Init.DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_BYPASSED;
hospi.Init.Refresh = 0;
if (HAL_OSPI_Init(&hospi) != HAL_OK)
{
for(;;);
}

/* Enable Reset --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x66; /* Reset Enable W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_NONE;
sCommand.DummyCycles = 0;
sCommand.NbData = 0;

if (HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Reset Device --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x99; /* Reset W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_NONE;
sCommand.DummyCycles = 0;
sCommand.NbData = 0;

if (HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Enter Quad-SPI Mode --------------------------- */
/* Common Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x31; /* Set Status2 W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_NONE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.DummyCycles = 0;
sCommand.NbData = 1;
reg_data = 0x02; /* Enable QuadI/O Mode */

if (HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

if (HAL_OSPI_Transmit(&hospi, &reg_data, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Enter MemoryMappedMode --------------------------- */
/* Read Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_READ_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_4_LINES;
sCommand.AlternateBytes = 0xFF; /* Need for Fast Read QUAD W25Q128JVSIQ */
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_8_BITS;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0xEB; /* Fast Read QUAD W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_4_LINES;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_4_LINES;
sCommand.DummyCycles = 4; /* DUMMY 4Cycle for Fast Read QUAD W25Q128JVSIQ */
sCommand.NbData = 0;

if(HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Write Commands */
sCommand.OperationType = HAL_OSPI_OPTYPE_WRITE_CFG;
sCommand.FlashId = HAL_OSPI_FLASH_ID_1;
sCommand.InstructionDtrMode = HAL_OSPI_INSTRUCTION_DTR_DISABLE;
sCommand.AddressDtrMode = HAL_OSPI_ADDRESS_DTR_DISABLE;
sCommand.DataDtrMode = HAL_OSPI_DATA_DTR_DISABLE;
sCommand.DQSMode = HAL_OSPI_DQS_DISABLE;
sCommand.SIOOMode = HAL_OSPI_SIOO_INST_EVERY_CMD;
sCommand.AlternateBytesMode = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytes = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesSize = HAL_OSPI_ALTERNATE_BYTES_NONE;
sCommand.AlternateBytesDtrMode = HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE;
sCommand.InstructionMode = HAL_OSPI_INSTRUCTION_1_LINE;
sCommand.InstructionSize = HAL_OSPI_INSTRUCTION_8_BITS;
sCommand.AddressSize = HAL_OSPI_ADDRESS_24_BITS;
/* Instruction */
sCommand.Instruction = 0x32; /* Page Write QUAD W25Q128JVSIQ */
/* Address */
sCommand.AddressMode = HAL_OSPI_ADDRESS_1_LINE;
sCommand.Address = 0;
/* Data */
sCommand.DataMode = HAL_OSPI_DATA_4_LINES;
sCommand.DummyCycles = 0;
sCommand.NbData = 0;

if(HAL_OSPI_Command(&hospi, &sCommand, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
for(;;);
}

/* Set OCTO-SPI as MemoryMappedMode */
sMemMappedCfg.TimeOutActivation = HAL_OSPI_TIMEOUT_COUNTER_DISABLE;
sMemMappedCfg.TimeOutPeriod = 0;
if(HAL_OSPI_MemoryMapped(&hospi, &sMemMappedCfg) != HAL_OK)
{
for(;;);
}

}

ή¤ì¤È¤·¤Æ¤Ï¥ê¥»¥Ã¥ÈÍ­¸ú->¥ê¥»¥Ã¥È->¥¯¥¢¥Ã¥ÉI/O¥â¡¼¥ÉÍ­¸ú->
¥¯¥¢¥Ã¥É¹â®ÆÉ¤ß½Ð¤·¥³¥Þ¥ó¥É->¥¯¥¢¥Ã¥É¥»¥¯¥¿½ñ¤­¹þ¤ß¥³¥Þ¥ó¥É
->HAL¤ÎMemoryMappedMode°Ü¹Ô´Ø¿ô¸Æ¤Ó½Ð¤·
¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£

"¥¯¥¢¥Ã¥ÉI/O¥â¡¼¥ÉÍ­¸ú"¤ÏW25Q128JVSIQ»È¤¦¤Ê¤éËÜÍèÉÔÍפǤ¹¤¬
"ǰ¤Î¤¿¤á"ÆÍ¤Ã¹þ¤ó¤É¤­¤Þ¤·¤¿¡Ä°ì±þ¤Ê¤¯¤Æ¤âưºî¤·¤Þ¤¹¡£

Ãí°ÕÅÀ¤Ç¤¹¤¬OCTO-SPI¤Ï½ñ¤­¹þ¤ß¤âMemoryMappedMode¤¬»ÈÍѲÄǽ¤Î°Ù¡¢
¥¯¥¢¥Ã¥ÉÆÉ¤ß½Ð¤·¥³¥Þ¥ó¥É¤Î¼¡¤Ë¥»¥¯¥¿½ñ¤­¹þ¤ß¥³¥Þ¥ó¥É¤ÎÀßÄ꤬
ɬ¿Ü¤Ë¤Ê¤ê¤Þ¤¹¡ª¡ª


¤Ê¤¼¤½¤¦¤Ê¤Ã¤Æ¤¤¤ë¤«¤È¤¤¤¦¤ÈHAL¤Î´Ø¿ôÆâ¤Ç½ñ¤­¹þ¤ß¥³¥Þ¥ó¥É¤Î
ÀßÄê¤Þ¤ÇÍ׵ᤷ¤Æ¤­¤ä¤¬¤ë¤«¤é¤Ç¤¹(Ê̤˺£²ó½ñ¤­¹þ¤ßÍפé¤ó¤Î¤Ë☠)
¤³¤ì¤âÀßÄꤷ¤Ê¤¤¤ÈÀè¤Ë¿Ê¤á¤Þ¤»¤ó¡ª

¡üưºî¤·¤Æ¤ë¤È¤³¤í

MemoryMappedMode¤ÇÀßÄꤷ¤¿¥¢¥É¥ì¥¹¤ÏSTM32F7¤Î¤Ç¤ä¤Ã¤¿»þ¤ÈƱ¤¸¤¯
0x90000000¤«¤é¤È¤Ê¤ê¤Þ¤¹¤Î¤Ç²áµî¤Î¥ê¥½¡¼¥¹¤¬ÍøÍѤǤ­¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤Î»È¤¤Êý¤Ç¤ÏFONTX2¥Õ¥¡¥¤¥ë¤ÎAnk¤ÎÊý¤ò0x90000000¡¢
Sjis-Kanji¥Õ¥©¥ó¥È¤ÎÊý¤Ï0x90010000¤«¤é»²¾È¤·¤Æ¤ª¤ê¤Þ¤¹¡£
Ank¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ï¤É¤ó¤Ê¤Ë¤Ç¤«¤¯¤È¤â65536byte°Ê¾å¤Ë¤Ê¤é¤Ê¤¤
¤À¤í¤¦¤È¤¤¤¦ÂÇ»»¤Ç¤³¤Î¥ª¥Õ¥»¥Ã¥ÈÃͤòÀßÄꤷ¤Æ¤Þ¤¹¡£


¤³¤ó¤Ê´¶¤¸¤ÇFONTX2(Á´³Ñ&Ⱦ³Ñ)¥Õ¥¡¥¤¥ë¤ò»Å¹þ¤ó¤ÀW25Q128JVSIQ¤«¤é
Æâ¢¥Õ¥é¥Ã¥·¥å¤ÈÊѤï¤é¤Ê¤¤´¶³Ð¤Ç¥Ç¡¼¥¿¤òÆÉ¤ß½Ð¤·É½¼¨¤¬¤Ç¤­¤Þ¤·¤¿¡£
»ÈÍѤ·¤¿¥Õ¥©¥ó¥È¤Ï¾®²Æ¥Õ¥©¥ó¥È¤ò12pt¤ÎFONTX2¤ËÊÑ´¹¤·¤¿¤â¤Î¤Ç¤¹¡£
STM32L5¤ÎOCTO-SPI¤ÏÌ¿Îᥭ¥ã¥Ã¥·¥å¤À¤±¤Ç¥Ç¡¼¥¿¥­¥ã¥Ã¥·¥å¤Ï̵¤¤
¤Ç¤¹¤¬Ê¸»úɽ¼¨¤äÁàºî´¶¤ËÆÃ¤Ë¤â¤¿¤Ä¤¤¤¿´¶¤¸¤Ï¤·¤Æ¤Þ¤»¤ó¤Í¡£



¥Ç¥Ð¥Ã¥¬¤Ç0x90000000ÈÖÃϤòɽ¼¨¤·¤Æ¤ß¤Þ¤·¤¿¡£
MemoyMappedModeÍ­¸ú¸å¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤ÈƱ¤¸¤è¤¦¤Ë¥Ç¥Ð¥Ã¥¬¤Ç
ÆâÉô¤Î¥Ç¡¼¥¿¤ò»²¾È¤Ç¤­¤Æ¤Þ¤¹¤Í¡£



¡ü¤È¤³¤í¤Ç¤É¤¦¤ä¤Ã¤ÆQSPI-ROM¤Ë¥Ç¡¼¥¿½ñ¤¯¤Î¡©
¡Äº£²ó¤Îµ­»ö¤Ï¤³¤ì¤¬ºÇÂç¤ÎÆñ´Ø¤Ç¤¹¡Ä¡ª
OpenOCD¤Ç¤ÏDiscovery·Ï¤Î¥Ü¡¼¥É¤Ç¤ÏI/F¤Î­¤âQSPI-ROM¤ÎÉʼï¤â
·è¤áÂǤÁ¤Î¤¿¤á¤ËQSPI-ROM¤ÎÆÉ¤ß½ñ¤­¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬
NUCLEO·Ï¤Î¤ä¤Ä¤Ï­¤Ï½Ð¤Æ¤¤¤ë¤â¤Î¤Î¤½¤ÎÀè¤Ë²¿¤¬¤Ä¤Ê¤¬¤ë¤«¤Ï
¤ï¤«¤é¤Ê¤¤¤Î¤Ç¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤â¤Î¤Ï²¿¤Ë¤â¤¢¤ê¤Þ¤»¤ó¡£

¤·¤¿¤¬¤Ã¤ÆOpenOCD¤Îmmw¤Î¥³¥Þ¥ó¥É¤Ç¤½¤ì¤¾¤ì¤ÎROM¥Ç¥Ð¥¤¥¹¸þ¤±¤Ë
¾å¤Ç½ñ¤¤¤¿¥³¡¼¥É¤ò16¿Ê¿ôʤ٤Ƥ¬¤à¤Ð¤Ã¤ÆÄêµÁ¤·¤Æ¤¤¤¯¤·¤«¤Ê¤¤¤Î
¤Ç¤¹¤¬¤Í¤à¤¤¤µ¤ó¤Ï¤½¤ó¤Ê¤³¤È¤ä¤ëµ¤ÎϤ¬¤Ê¤¤¤Î¤Ç¡Ä
Jtagkey2¤ÈSPI-ROM½ñ¤­¹þ¤ß¥×¥í¥°¥é¥à"Flashom"¤Ë¤ÆFONTX2¥Ç¡¼¥¿¤ò
½ñ¤­¹þ¤à¤³¤È¤Ë¤·¤Þ¤·¤¿¡£

»ÈÍѤ¹¤ë¥Õ¥©¥ó¥È¤Ï12x12px¤Î¾®²Æ¥Õ¥©¥ó¥È¤Ç¤¹¡£
Ank¤ÏKONATHN12.FNT¤ò¡¢S-Jis¤ÎKanji¤ÏKONATZN12.FNT¤ò»ÈÍѤ·¤Þ¤¹¡£
¾åµ­¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¡¢»ä¤ÎL5¥×¥í¥¸¥§¥¯¥È¤Î²¼µ­¥Ç¥£¥ì¥¯¥È¥ê¤ò
»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
./lib/FONTX2/inc/fonts/KONATSU


¢¨¾®²Æ¥Õ¥©¥ó¥È¤Ë¤Ä¤¤¤Æ¤ÏTTF¥Õ¥¡¥¤¥ë¤ÇÄ󶡤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
º£²ó¤Ï¤¢¤é¤«¤¸¤áFONTX2¥³¥ó¥Ð¡¼¥¿¤ÇTTF->FONTX2·Á¼°¤ËÊÑ´¹
¤·¤ÆÁ´³Ñ/Ⱦ³Ñ¤È¤â»ÈÍѤ·¤Æ¤ª¤ê¤Þ¤¹¡£



¤Þ¤º¤ÏSPI-ROM¤Îǧ¼±¤ÈÆÉ¤ß½Ð¤·¡£¤Á¤ã¤ó¤Èǧ¼±¤µ¤ì¤Æ¤¤¤ë¤Î¤ò³Îǧ¡£
¤Ä¤¤¤Ç¤ËÆÉ¤ß½Ð¤·¤¿¥Ç¡¼¥¿¤Ï¸å¤Ç»ÈÍѤ¹¤ë¤Î¤Çbin·Á¼°¤ÇÊݸ¤·¤Þ¤¹¡£



JtagKey2(¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ëFT2232H)¤ÎSCK¤ÏºÇÂç30MHz¤Î¥¹¥Ô¡¼¥È¤Ê¤Î¤Ç
ÇÛÀþĹ¤Ï¤Ê¤ë¤Ù¤¯Ã»¤¯¤·¤Þ¤·¤ç¤¦¡£5cm°Ê²¼¤À¤È¤Þ¤ºÌäÂê¤Ê¤¤¤Ç¤¹¡£
»Äǰ¤Ê¤¬¤é¤²¤¿¥²¥¿´ðÈĤÈNUCLEO´ðÈĤò¹çÂΤ·¤¿¾õÂ֤ǤϤޤȤâ¤Ëǧ¼±
½ÐÍè¤Ê¤«¤Ã¤¿¤Î¤ÇNUCLEO¤«¤é5V¤À¤±ÇÒ¼Ú¤·¤ÆW25Q128JVSIQ¤È°ìÂаì¤ÇÇÛÀþ
¤¹¤ë·Á¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ê¤ª¡¢CS¤Ï¥×¥ë¥¢¥Ã¥×ɬ¿Ü¤Ê¤Î¤Ç¤¹¤¬¤Í¤à¤¤¤µ¤ó¤Ï
ǰ¤Î¤¿¤áCLK½ü¤¯¤¹¤Ù¤Æ¤ÎI/O¤ò22kohm¤Ç¥×¥ë¥¢¥Ã¥×¤·¤Æ¤Þ¤¹¡£
°ìÊýCLK¤ÏSDMMC¤ÈƱ¤¸¤¯Ä¾Îó½ªÃ¼Äñ¹³¤ò˺¤ì¤º¤Ë¡ª¡ª
¤Í¤à¤¤¤µ¤ó¤ÏSDMMC¤ÈƱ¤¸33ohm¤òľÎó½ªÃ¼¤È¤·¤Æ»ÈÍѤ·¤Æ¤Þ¤¹¡£

¤ª¼¡¤Ï½ñ¤­¹þ¤ßÍѥХ¤¥Ê¥ê¤ÎºîÀ®¡£
¤Í¤à¤¤¤µ¤ó¤ÎÃΤë¸Â¤ê¤Ç¤ÏFlashrom¤Ï¥¢¥É¥ì¥¹¤ò¥ª¥Õ¥»¥Ã¥È»ØÄꤷ¤Æ
°ìÉô¤ÎÎΰè¤À¤±¤ò½ñ¤­¹þ¤à¤³¤È¤¬¤Ç¤­¤º¡¢Á´Îΰè°ìµ¤¤Ë½ñ¤­¹þ¤ß¤·¤Ê¤¤¤È
¤¤¤±¤Ê¤¤¤Î¤ÇÀè¤ËÆÉ¤ß½Ð¤·¤¿bin¥Õ¥¡¥¤¥ë¤òÍøÍѤ·¤Æ¤½¤³¤ËFONTX2¥Õ¥¡¥¤¥ë
¤ò¾å½ñ¤­¤¹¤ë·Á¤ÇÇÛÃÖ¤·FONTX2¤ò»Å¹þ¤ó¤ÀROM¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹¡£
¥Ð¥¤¥Ê¥êÊÔ½¸¥×¥í¥°¥é¥à"Stirling"¤ò¶î»È¤·¤Æ0x0000000¤ËANK¥Õ¥©¥ó¥È¤ò
0x00010000¤ËKanji¥Õ¥©¥ó¥È¤ò¤½¤ì¤¾¤ì¾å½ñ¤­¥â¡¼¥É¤Ç¥³¥Ô¥ÚÇÛÃÖ¤·¤Þ¤¹¡£
¥ª¥Õ¥»¥Ã¥È¤Ï1¥Ð¥¤¥È¤Ç¤â¤º¤ì¤Ê¤¤¤è¤¦¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£


Ank¤ÏÇÛÃÖ¤µ¤ì¤ë¤È¤³¤ó¤Ê´¶¤¸


Kanji¤Ï¤³¤ó¤Ê¤«¤ó¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£


Stirling¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×ɽ¼¨¤À¤È¥Ð¥¤¥Ê¥ê¥¤¥á¡¼¥¸¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£
¤Þ¤À¤Þ¤À°ìÇեǡ¼¥¿µÍ¤á¹þ¤á¤Þ¤¹¤Í¡£


¤½¤·¤Æ½ñ¤­¹þ¤ß¡£JtagKey2¤ÈFlashrom¤ò»ÈÍѤ·¤¿ºÝ¤ÏÄ̾ï¤ÎSPI¤Ç
½ñ¤­¹þ¤à¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤¬W25Q128JVSIQ¤Ï¥»¥¯¥¿½ñ¤­¹þ¤ßÂбþ¤Ê¤Î¤Ç
16MByte¤â¤¢¤ëÍÆÎ̤Ǥâ2ʬ¤â¤«¤«¤é¤º½ª¤ï¤Ã¤Á¤ã¤¤¤Þ¤¹¡£


¤Í¤à¤¤¤µ¤ó¤Î¸ø³«¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Ç¤Ï°ì±þºîÀ®ºÑ¤ß¤ÎQSPI-ROM
¥¤¥á¡¼¥¸(128QVFONT.bin)¤òźÉÕ¤·¤Æ´Êñ¤Ê»ÈÍѼê½ç¤â½ñ¤¤¤Æ¤Þ¤¹¤Î¤Ç
¿ì¶¸¤ÊÊý¤Ï¤´»²¹Í¤Ë¡Ä¡£

¤Þ¤¡»ä¤Î¤Ö¤í¤°ÉáÃʤ«¤é¸«¤é¤ì¤Æ¤ëÊý¤Ï³Ú¾¡¤À¤È»×¤¤¤Þ¤¹¡£





¤½¤ó¤Ê¤ï¤±¤ÇSTM32H5¤«¤é¤ä¤ëͽÄê¤À¤Ã¤¿OCTO-SPI¤Ç¤·¤¿¤¬L5¤Ç¤â¤¦¤Þ¤¯
»È¤¤¤³¤Ê¤¹¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡ª
L5¤Ç¤ä¤ê¤¿¤¤¤³¤È¤Ï°ìÄ̤êÁ´Éô¤ä¤êÀڤ俤ΤǤ¤¤¤´¶¤¸¤ÇSTM32H5¤Ø¤È
·Ò¤²¤Æ¹Ô¤­¤¿¤¤¤È¤ª¤â¤¤¤Þ¤¹¡ª¡ª

Âç¼þ²óÃÙ¤ì¤ÇCortex-M33¤ÈSTM32L5¤Ï¤Â¤á¤Þ¤·¤¿

¡üM33½Ð¤Æ¤«¤é²¿Ç¯¤¿¤Ã¤Æ¤ë¤ó¤ÀYO
ÆÅARM¤«¤é¾®Ê¸»úarm¤ËÂå¤ï¤Ã¤Æ¤â¤Ï¤ä¿ôǯ¡Ä¤Í¤à¤¤¤µ¤ó¤â¤è¤¦¤ä¤Ã¤È
ARMv8¤ÎCortex-M33¥³¥¢¤Ë¼ê¤ò½Ð¤·¤Þ¤·¤¿¡Ä¡ª


¥»¥­¥å¥ê¥Æ¥£¡¼µ¡Ç½¤ò¶¯²½¤·¤¿Cortex-M33¥³¥¢¤ÎSTM32L5¤Ç¤¹¡ª¡ª
¤Æ¤¤¤¦¤«2023ǯ¸½ºß¤ÏL5¤ò¤½¤ì¤¾¤ì¤ÎʬÌîÊ̤˿ʲ½¤µ¤»¤¿STM32U5¤ä
STM32H5¤âÅо줷¤Æ¤ª¤ê¤Þ¤¹¤¬¤Þ¤º¤ÏL5¤«¤é¹Ô¤­¤Þ¤¹¡ª¡ª


¼ÂºÝ¤Ë¤ÏSTM32L552ZET6QU¤ò»ÈÍѤ·¤¿NUCLEO-L552ZE-Q¥Ü¡¼¥É¤òÆþ¼ê
¤¤¤¿¤·¤Þ¤·¤¿¡£
¤³¤ÎNUCLEO´ðÈĤÏ(¤Í¤à¤¤¤µ¤ó¤ÎÃæ¤Ç¤Î)Ä̾Î144PinÈÄNUCLEO¤È¸Æ¤Ð¤ì¤ë
¤â¤Î¤Ç¤¹¡£NUCLEO´ðÈIJ¤ÎÃæ¤Ç¤ÏºÇÂç¤ÎÂ礭¤µ¤È¤Ê¤ê¤Þ¤¹¤¬¥Ô¥ó¿ô¤Î
¿¤¤¥Þ¥¤¥³¥ó¤ò»È¤Ã¤Æ¤¤¤ë¤ª¤«¤²¤«³°Éô¤Ø°ú¤­½Ð¤µ¤ì¤¿¥Ý¡¼¥È¤¬¸ÇÄê²½
¤µ¤ì¤Æ¤ª¤ê¡¢°Û¤Ê¤ëCPU´Ö¤Ç¤â²¼ÂÌ´ðÈĤò»È¤¤¤Þ¤ï¤»¤é¤ì¤ë¤È¤¤¤¦
¶Ë¤á¤ÆÂ礭¤ÊÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£


Î㤨¤ÐSDMMC¤Î¥Ý¡¼¥È¤Ï¥³¥Í¥¯¥¿¤Î¤³¤Î°ÌÃÖ¤Ëɬ¤ºÇÛÃÖ¤µ¤ì¤Æ¤ª¤ê¡¢
°ìÅÙ´ðÈĤò¤³¤·¤é¤¨¤Æ¤·¤µ¤¨¤¹¤ì¤ÐSTM32H7¤À¤í¤¦¤¬STM32F4¤À¤í¤¦¤¬
STM32U5¤À¤í¤¦¤¬¤µ¤é¤ËºÇ¿·¤ÎSTM32H5¤Ç¤¹¤é144PinÈÇNUCLEO¤Ê¤é
Ʊ°ÌÃ֤ʤ櫓¤Ç¥Ï¡¼¥É¤È¥½¥Õ¥È¤ÎÀÚ¤êʬ¤±¤¬¤È¤Æ¤âÍÆ°×¤Ë¤Ê¤ê¤Þ¤¹¡£


¡ü¤Æ¤ï¤±¤Ç144PinNUCLEO´ðÈÄÍÑÈÆÍѲ¼ÂÌ´ðÈĤòºî¤Ã¤Æ¤ß¤¿¡£


¤Í¤à¤¤¤µ¤ó¤ÏÎáÏÂ5ǯ¤Ë¤Ê¤Ã¤Æ¤â¼«ÎϤǥץê¥ó¥È´ðÈĵ¯¤³¤»¤Ê¤¤»¨µû
¤Ê¤Î¤Ç¥æ¥Ë¥Ð¡¼¥µ¥ë´ðÈĤȥݥꥦ¥ì¥¿¥óƼÀþ¤Ç¤»¤³¤»¤³ÇÛÀþ¤Ç¤¹¡Ä¡£

ÂçÆ°Ì®¤Î+3.3V¥é¥¤¥ó¤ÏLCD,SDMMC,QSPI/OCTO-SPI,I2S¥Ç¥Ð¥¤¥¹¤ÈÂçÎ̤Ë
ÅÅÎϤò¾ÃÈñ¤¹¤ë¤Î¤ÇNUCLEO¤Î+3.3V½ÐÎϤ«¤é¼èÆÀ¤ÏÉÔ²Äǽ¤Ç¤¹¡£
¤·¤¿¤¬¤Ã¤ÆVbus¤Î+5V¤«¤é+3.3V¤ò¸ÄÊ̤˺î¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£


¤³¤³¤ÇÅо줹¤ë¤Î¤¬Î÷²Á¤Ç¤Ñ¤ï¤Õ¤ê¤ã¡¼¤ÊLDO¡¢MIC37100-3.3WS-TR¤Ç¤¹¡ª
LT1963A¤¬¹âÎæ¤Î²Ö¤Ë¤Ê¤ê¡¢ADP3338¤¬NRND¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿º£¡¢¹âÀ­Ç½
LDOÆṉ̃¤È¤Ê¤Ã¤¿¤Í¤à¤¤¤µ¤ó¤òµß¤¦¤Ñ¤ï¤Õ¤ê¤ã¡¼¤Ê¤ä¤Ä¤Ç¤¹¡£
¥É¥í¥Ã¥×¥¢¥¦¥ÈÅ۵¤Ï280mV/1A,10uF°Ê¾å¤Î¥»¥é¥ß¥Ã¥¯¥³¥ó¥Ç¥ó¥µ¤Ç
ưºî²Äǽ¤Ç¤ªÃÍÃÊ1¸Ä240±ß¤¯¤é¤¤¤Ê¤Î¤ÇÈó¾ï¤Ë¥ª¥È¥¯¤Ç¤¹¡ª¡ª¡ª
¤³¤Á¤é¤Ç¤â¾Ò²ð¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¥è¥í¥·¥¯¡ª



¤§¤Ã¤ÈÏ䬤½¤ì¤Þ¤·¤¿¤¬SDMMC¤Îü»Ò¤Ï¥Þ¥¤¥¯¥íSD¥³¥Í¥¯¥¿¤òºÎÍÑ
¤·¤Þ¤·¤¿¡£¤½¤ì¤È°ÊÁ°¤«¤é¸À¤Ã¤Æ¤¤¤ëÄÌ¤ê³Æ¥Ç¡¼¥¿¥é¥¤¥ó¤Î¥×¥ë¥¢¥Ã¥×&
½ªÃ¼¤Î½èÍý¤ÏÍ­¸À¼Â¹Ô¤Ç¤·¤Ã¤«¤ê»Ü¤·¤Æ¤ª¤ê¤Þ¤¹¡£¤Í¤à¤¤¤µ¤ó¤ÏCMD¤È
D0~D3¤Î¥×¥ë¥¢¥Ã¥×¤ò22kohm,CLK¤ÎľÎó½ªÃ¼¤Ï33ohm¤È¤·¤Þ¤·¤¿¡£


·ë¹½¥é¥Õ¤Ê¼ÂÁõ¤Ç¤¹¤¬¡¢CLK¤ËÁÞÆþ¤¹¤ëľÎó½ªÃ¼¤Î¸ú²Ì¤ÏÀäÂç¤Ç¤¹¡£
̵Äñ¹³¾õÂ֤ǤϤ³¤ó¤Ê˽¤ì¤Þ¤ï¤Ã¤Æ¤¤¤ëÀ¸°Õµ¤¥¯¥í¥Ã¥¯¥é¥¤¥ó¤â¡Ä


Äñ¹³¤òľÎó¤Ë¤Ö¤Á¤³¤à¤À¤±¤Ç¤³¤ó¤Ê¤Ë¤ï¤«¤é¤»¤é¤ì¤Þ¤¹¡ª¤³¤ì¤Ç
°ÂÄꤷ¤ÆSD¥«¡¼¥É¤Ë¥¢¥¯¥»¥¹¤¬¤Ç¤­¤Æ¥½¥Õ¥È¤ËÀìǰ¤Ç¤­¤Þ¤¹¤Í¡ª


ɽ¼¨¥Ç¥Ð¥¤¥¹¤Ï3ǯÁ°¤Ë¹ØÆþ¤·¤Æ²¹¤á¤¹¤®¤ÆÉå¤é¤»¤¿TFT-LCD¥â¥¸¥å¡¼¥ë¡¢
ATM0130B3¤òºÎÍѤ·¤Þ¤·¤¿¡£240x240¤Ê¤Î¤Ë1.3¥¤¥ó¥Á¤È¤È¤Ã¤Æ¤â¾®¤µ¤¤
¥â¥¸¥å¡¼¥ë¤Ê¤Î¤Ç¤¹¤¬¤³¤ÎNUCLEO´ðÈĤˤϤޤµ¤ËºÇŬ¤Ê¥ä¥Ä¤Ç¤¹¡£

¤³¤Î¥â¥¸¥å¡¼¥ë¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ë¥³¥ó¥È¥í¡¼¥é¤ÏST7789V2¤Ç¤¹¡£V2¤È¤«
¤ª¿¬¤Ë̾Á°¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¤¬2023ǯ¸½ºß¡¢¤³¤ÎST7789²¤ÏÅŻҹ©ºî¤Î
¤ª¶¡¤È¤·¤ÆÉ¬¤ºÌ¾Á°¤¬¾å¤¬¤ë¤¯¤é¤¤Í­Ì¾¤Ç¡¢¤â¤Ï¤äILI9341¤è¤ê¤â¹­¤¯
»ÈÍѤµ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¤Þ¤µ¤ËÇÆ¸¢¤ò°®¤Ã¤¿¤È¤¤¤Ã¤Æ¤â¤è¤¤¤Ç¤·¤ç¤¦¡£
¥Þ¥ë¥Á¥×¥ì¥Ã¥¯¥¹²½¤µ¤ì¤¿¥Ç¡¼¥¿¥é¥¤¥ó¤«¤é¥Ç¥Ð¥¤¥¹ID¼èÆÀ¤¹¤ëÊýË¡Åù¤Î
»ÈÍÑ»þ¤Î¥³¥Ä¤Ï¾ì¤ò²þ¤á¤Æ¥½¥Õ¥ÈÊԤǾҲ𤷤ޤ¹¡£


FONTX2Åù¤ÎÂçÍÆÎ̥ǡ¼¥¿¤ÎÊݸÀè¤È¤·¤Æ¥á¥â¥ê¥Þ¥Ã¥×¥É¤Ç¥ê¥Ë¥¢¤Ë
¥¢¥¯¥»¥¹¤Ç¤­¤ëQSPI¤ò»ÈÍѤ·¤Þ¤¹¡£Áª¤ó¤À¥Ç¥Ð¥¤¥¹¤Ï¤³¤ì¤Þ¤¿ÅÅ»Ò
¹©ºî¤ÇÄêÈÖ¤ÎSPI-ROM¤Ë¤Ê¤Ã¤¿Winbond¤ÎW25Q128JVSIQ¤Ç¤¹¡£
¤Á¤Ê¤ß¤ËW25Q128JV¼«¿È¤ÏQSPI¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¤¬
(¥Ñ¡¼¥Ä¥Ê¥ó¥Ð¡¼ËöÈø¤ÎIQ¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇQSPI¥â¡¼¥É¤Î°ÕÌ£)¡¢STM32L5¤Ë
¤ª¤¤¤Æ¤ÏOCTO-SPI¤È¤¤¤¦QSPI¤¬¤µ¤é¤Ë¥Ñ¥ï¡¼¥¢¥Ã¥×¤·¤¿¥â¥¸¥å¡¼¥ë¤¬
ÅëºÜ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
Ãí¡§´ð¼ÂÁõ¤Ï¤·¤Þ¤·¤¿¤¬¤¿¤Ö¤óL5ÈǤǻÈÍѤ»¤ºH5ÈÇNucleo¤Ç»È¤¦¤È»×¤¤¤Þ¤¹¡£
SAI¤Ë¤Ä¤¤¤Æ¤â¥Õ¥é¥Ã¥·¥åÍÆÎ̤δط¸¤ÇH5ÈÇNucleo¤Ç¾Ò²ð¤·¤Þ¤¹¡£

OCTO-SPI¼ÂÁõ¤·¤Þ¤·¤¿¡£



¤½¤ó¤Ê¤ï¤±¤Ç²¼ÂÌ´ðÈĤξҲð¤À¤±¤Ç°ìÇÕ°ìÇդˤʤäƤ·¤Þ¤¤¤Þ¤·¤¿¤Î¤Ç
¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î¤ËÁêÅö¤¹¤ëFatFs¤Î¼ÂÁõÅù¤Î¥½¥Õ¥È¥¦¥¨¥¢¤Î¾Ò²ð¤Ï
¼¡²ó°Ê¹ß½ç¼¡¾Ò²ð¤È¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£¹¹¿·´èÄ¥¤ë¤¾¤¤¡ª

¤Þ¤¿¡¢µ¤¤Å¤¤¤Æ¤ëÊý¤â¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¤¹¤Ç¤Ë¤ª¤­¤Ñ¤ËFatFs¤Î¼ÂÁõÎã¤Î
L5¸þ¤±¥×¥í¥¸¥§¥¯¥È
¤òÀè¹Ô¤Ç¸ø³«¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç¶½Ì£¤¢¤ëÊý¤Ï¤³¤ì¤Ç
ͽ½¬¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£

AVR128DA¤È¤«DB¤ò¤â¤¦¤Á¤ç¤Ã¤È»È¤Ã¤Æ¤ß¤ë

¡üXMEGA¤Î¸å·Ñ¡ªµ¡Ç½ËþºÜ¤Ç¥¨¥é¥Ã¥¿¤âËþºÜ
ÉʼïŪ¤Ë¤ÏXMEGA¤Î¸å·Ñ¤È¤Ê¤ëAVR-Dx¥·¥ê¡¼¥º¡£¿ô¡¹¤Î¿·µ¡Ç½¤¬¤¢¤ê¤Þ¤¹¤¬
¤½¤ì¤ÏƱ»þ¤Ë¿ô¡¹¤Î¥¨¥é¥Ã¥¿¤ò»Å¹þ¤à¤³¤È¤È¤Ê¤ê¥¨¥é¥Ã¥¿¥·¡¼¥È¤È¥Á¥Ã¥×¥ê¥Ó¥¸¥ç¥ó¤Ë
Ãí°Õ¤·¤Æ¤ª¤«¤Ê¤¤¤È¥É¥Ï¥Þ¥ê¤·¤ÆÌܤβ¼¤Ë¥¯¥Þ¤Ä¤±¤Æ¥À¥Ö¥ë¥Ô¡¼¥¹¤·¤Æ
¤·¤Þ¤¤¤Þ¤¹¡£

¸½ºß¡¢AVR128DA¤ËÂåɽ¤µ¤ì¤ëAVR-DA¥·¥ê¡¼¥º¤ÈAVR-DB¥·¥ê¡¼¥º¤¬
ήÄ̤·¤Æ¤ª¤ê¤Þ¤¹¡£
DA¤ÈDB¤Î°ã¤¤¤Ï¥¢¥Ê¥í¥°Æþ½ÐÎϤ¬¤µ¤é¤Ë¶¯²½¤µ¤ì¤Æ¤¤¤ë¤Î¤È°Û¤Ê¤ëÅ۵¤Î
I/O¤½¤·¤ÆDA¤Ë¸ºß¤·¤¿¥¨¥é¥Ã¥¿¤¬½¤Àµ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤Ç¤¹¡£

¥Þ¥¤¥¯¥í¥Á¥Ã¥×¤Ï²áµî¤Î¥·¥ê¡¼¥º¤Ç½Ð¤¿¥¨¥é¥Ã¥¿¤Ï¿·¤·¤¤Åۤǽ¤Àµ¤¹¤ë¤è¤È¤¤¤¦
¥¹¥¿¥ó¥¹¤Ê¤Î¤Ç¤·¤ç¤¦¤«¡Ä???¤³¤ì¤«¤éÇ㤦¿Í¤ÏDB¥·¥ê¡¼¥º°Ê¹ß¤Ë¤·¤Æ¤ª¤±¤ÐÊѤÊ
ÃÏÍëÆ§¤Þ¤º¤ËºÑ¤à¤È»×¤¤¤Þ¤¹¡£¤¿¤À¤·»ÈÍÑÁ°¤Ë¥¨¥é¥Ã¥¿¡¼¥·¡¼¥È¤Ïɬ¤ºÌܤò
Ä̤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£

20240229ÄÉ:
½©·î¤µ¤ó¤è¤êAVR128DB28¤¬ÈÎÇ䤵¤ì¤Þ¤·¤¿¡ª¡ª¡ª¡ª¡ª¡ª
20240229ÄÉ:



¡üÀ½Â¤³«»Ïľ¸å¤ÎAVR32DA¤Ë¸ºß¤·¤¿Ã×̿Ū¥¨¥é¥Ã¥¿
¤µ¤ÆAVR¤Ï¥¢¥È¥á¥ë»þÂ夫¤é¤Þ¤ºÂ礭¤á¤ÎÍÆÎ̤ΥÁ¥Ã¥×ºî¤Ã¤Æ¤½¤Î¤¢¤È¥·¥å¥ê¥ó¥¯
¤·¤Æ¤¤¤¯ÎÌ»ºÂÎÀ©¤Îή¤ì¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬AVR128DA¤¬À¤¤Ë½Ð¤Æ¾¯¤··Ð¤Ã¤¿º¢¤Ë
À½Â¤¤µ¤ì¤¿AVR32DA¤È¤¤¤¦¥Á¥Ã¥×¤ËÃ×̿Ū¥¨¤Ê¥¨¥é¥Ã¥¿¤¬Â¸ºß¤·¤Æ¤¤¤Þ¤·¤¿¡ª¡ª¡ª

¥¨¥é¥Ã¥¿¤ÎÆâÍÆ¤ÏËÜÍè¤Ï4¥Ð¥¤¥ÈɬÍפʳä¤ê¹þ¤ß¥Ù¥¯¥¿¤¬2¥Ð¥¤¥È¹ï¤ß¤Ë¤Ê¤Ã¤Æ¤¤¤ë
¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£AVR32DA¤Î¥Õ¥é¥Ã¥·¥åÎΰ褹¤Ù¤Æ¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë¤Ï³ä¤ê¹þ¤ß
¥Ù¥¯¥¿¤Ç4¥Ð¥¤¥È¤ÎjmpÌ¿Îá¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤¬¡¢¥Ï¡¼¥ÉŪ¤ËȯÀ¸¤¹¤ë³ä¤ê¹þ¤ß
Í×°ø¤Ï2¥Ð¥¤¥È¤º¤Ä¤ÇµÍ¤áµÍ¤á¤Ë¤Ê¤Ã¤Æ¤ë¤Î¤ÇjmpÌ¿Îá¤Ç¤Ï¤È¤ó¤ÀÀ褬¤á¤Á¤ã¤¯¤Á¤ã
¤Ë¤Ê¤Ã¤ÆrjmpÌ¿Îá¤ò»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢8kBʬ¤·¤«¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó¡£

¢­°Ê²¼AVR¤Î¥¸¥ã¥ó¥×Ì¿Îá¤Î»²¹Í»ñÎÁ

RJMP¤Ï16bit¥ª¥Ú¥³¡¼¥É¤Ê¤Î¤Ç2¥Ð¥¤¥È
(¥Õ¥é¥Ã¥·¥å8kB°Ê²¼¤Î¥Ç¥Ð¥¤¥¹¤Ï¤³¤Á¤é)


JMP¤Ï32bit¥ª¤Ú¥³¡¼¥É¤Ê¤Î¤Ç4¥Ð¥¤¥È
(¥Õ¥é¥Ã¥·¥å8kB°Ê¾å¤Î¤Ç¥Ç¥Ð¥¤¥¹¤Ï¤³¤Á¤é)

avr-gcc¤Ë´Ø¤·¤Æ¤Ï4¥Ð¥¤¥È¶èÀÚ¤ê¤Î³ä¤ê¹þ¤ß¥Ù¥¯¥¿¥¢¥É¥ì¥¹¤òÁ°Äó¤Ë
¥¹¥¿¡¼¥È¥¢¥Ã¥×¥³¡¼¥É¤¬¥Ó¥ë¥É¥¤¥ó¤µ¤ì¤Æ¤ª¤ê¤¦¤ó¤³¤Ä¤­¤ÎAVR32DA¤Ç¤Ï
¤É¤¦´èÄ¥¤Ã¤Æ¤â¤Þ¤È¤â¤Ë³ä¤ê¹þ¤ß¤¬»È¤¨¤Þ¤»¤ó¡ª


¢¬¥Ç¡¼¥¿¥·¡¼¥È¤è¤êAVR32DA¤Î³ä¤ê¹þ¤ß¥Ù¥¯¥¿¤Î²òÀâ¡£
¥¢¥É¥ì¥¹¤Ï2¥ï¡¼¥É(=4¥Ð¥¤¥È)¶èÀÚ¤ê¤Ê¤Î¤¬¤ï¤«¤ê¤Þ¤¹¡£

AVR¤Ã¤ÆºÇ½é¤Ë½Ð¤¿Åö½é¤Ï"¤¹¤Ã¤­¤ê16bit¥ª¥Ú¥³¡¼¥É"¤òÇä¤ê¤Ë¤·¤Æ¤ÆÅÁÅýŪ¤Ë
¥ï¡¼¥É(16bit)¤Ç¥×¥í¥°¥é¥à¥¢¥É¥ì¥¹¤òɽ¸½¤·¤Æ¤­¤¿¤«¤é¥·¥å¥ê¥ó¥¯À߷פ·¤¿¿Í¤¬
¥Ð¥¤¥È¥¢¥É¥ì¥¹¤È´Ö°ã¤Ã¤Á¤ã¤Ã¤¿¤ó¤¸¤ã¤Ê¤¤¤«¤Ê¡Ä

¤È¤¤¤¦¤ï¤±¤Ç¤³¤ÎÀ½Â¤½é´ü¤Ë½Ð¤Æ¤·¤Þ¤Ã¤¿AVR32DA¤Ï²ó¼ý¤µ¤ì¡¢¸½ºßήÄ̤·¤Æ¤¤¤ë
ʪ¤Ë¤Ä¤¤¤Æ¤ÏÀµ¤·¤¤³ä¤ê¹þ¤ß¥¢¥É¥ì¥¹´Ö³Ö¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤½¤¦¤Ç¤¹¡£¤ï¤¿¤·¤ÏÉݤ¯¤Æ
»È¤¦µ¤¤â¤Ê¤¤¤Ç¤¹¤±¤É¡ª

¤Á¤Ê¤ß¤ËÃ×̿Ū¤¹¤®¤ë¥¨¥é¥Ã¥¿¤æ¤¨¤Ë¥¨¥é¥Ã¥¿¡¼¥·¡¼¥È¤Ë¤Ïµ­ºÜ¤µ¤ì¤Æ¤ª¤é¤º¡¢
AvrFreaks¤Ç»ØÅ¦¤¬¤¢¤Ã¤Æ½é¤á¤Æ¹­¤¯ÃΤé¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤½¤¦¤Ç¤¹¡£


¡üAVR128DA¤Ë¤â¤ä¤Ã¤Ñ¤ê¤¢¤«¤ó¥¨¥é¥Ã¥¿
¤½¤·¤Æ»ä¤¬»ý¤Ã¤Æ¤¤¤ëAVR128DA¤â¥Õ¥é¥·¥å¥á¥â¥ê¤¬¤é¤ß¤Î¥¨¥é¥Ã¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢
¤½¤ì¤Ï²¼µ­¤Î¾ò·ï¤¬¤¹¤Ù¤Æ½Å¤Ê¤Ã¤¿»þ¤Ëµ¯¤³¤ê¤Þ¤¹¡£

­¡¥Õ¥é¥Ã¥·¥åÎΰè¤ò¥Ç¡¼¥¿Îΰè¤Î0x8000¤«¤é32kBʬ¤ò¥Þ¥Ã¥Ô¥ó¥°¤·¤ÆÆÉ¤ß½ñ¤­¤¹¤ë
­¢FUSEÎΰè¤ÎBOOTCODE¤Ë0°Ê³°¤Î¿ôÃͤ¬Æþ¤Ã¤Æ¤¤¤ë(=APPCODEÎΰè¤òÍ­¸ú¤Ë¤¹¤ë)
­£NVMCTRL.CTRLB¤ÎBOOTRP¤ò¤¿¤Æ¤Æ¥Ö¡¼¥ÈÎΰè¤Î¥×¥í¥Æ¥¯¥·¥ç¥ó¤ò¹Ô¤¦

¾åµ­¤¹¤Ù¤Æ¤¬½Å¤Ê¤ë¤È32kB¶èÀÚ¤ê¤Î¤É¤ÎÎΰè¤ò¥Þ¥Ã¥Ô¥ó¥°¤·¤Æ¤âºÇ½é¤ÎBOOTCODE¤Î
Îΰ褬Ƭ¤Î¤Û¤¦¤Ë¤«¤Ö¤µ¤Ã¤Æ¤­¤ä¤¬¤ê¤Þ¤¹¡ª¡ª


¢¬Ä¶¤ï¤«¤ê¤Å¤é¤¤¸ø¼°¤Î¥¨¥é¥Ã¥¿¥·¡¼¥È¤Î²òÀâDA!¡£


¥Ö¡¼¥ÈÎΰè¤òÀßÄꤷ¤Ê¤«¤Ã¤¿¤êLPM¤Ç¥Õ¥é¥Ã¥·¥åÎΰè¤Î¥Ç¡¼¥¿¤ÎÆÉ¤ß¼è¤ê¤¹¤ë¤Ê¤é
Á´¤¯µ¤¤Ë¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤¬¤»¤Ã¤«¤¯¥Ç¡¼¥¿Îΰè¤Ë¥Õ¥é¥Ã¥·¥åÎΰè¤Î¥Ç¡¼¥¿¤ò
¥Þ¥Ã¥Ô¥ó¥°¤Ç¤­¤ë¤Î¤Ç¤¹¤«¤é¤»¤á¤Æ³èÍѤϤ·¤¿¤¤¤Ç¤¹¤è¤Í¡Ä¡ª


¡üAVR-Dx¤òµß¤¤¤¿¤¤
¤È¤¤¤¦¤ï¤±¤Ç¤»¤á¤Æ32kBʬ¤À¤±¤Ç¤âPROGMEM¤·¤Ê¤¤¤ÇSTM32¤È¤«¤ÈƱ¤¸¤è¤¦¤Ë
const¤ÊÃͤòÃÖ¤¤¤Æ¤ß¤¿¤«¤Ã¤¿¤Î¤Ç¾åµ­¥¨¥é¥Ã¥¿¤òƧ¤Þ¤Ê¤¤¤è¤¦¤ËÇÛθ¤·¤¿¤¦¤¨¤Ç
¥ê¥ó¥«¥¹¥¯¥ê¥×¥È¤ò¤¤¤¸¤ê¥Õ¥é¥Ã¥·¥åÎΰè¤Î¥Þ¥Ã¥Ô¥ó¥°µ¡Ç½¤òºÇÂç¸Â¤Ë³èÍѤ¹¤ë
ºîÀï¤ò¼è¤ê¤Þ¤·¤¿¡ª


£±¡¥Ä̾ïÈǤξì¹ç

¥Þ¥Ã¥Ô¥ó¥°¤ò»ÈÍѤ»¤ºÁÇľ¤ËPROGMEM¤·¤¿¾ì¹ç¤Î¥×¥é¥ó¤Ç¤¹¡£
128kByte¼«Í³¤Ë»È¤¨¤Þ¤¹¤¬64kB°Ê¾å¤ÎPROGMEM¤ÎÆÉ¤ß½Ð¤·¤Ïfar¥Ý¥¤¥ó¥¿¤ò
»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£


¤Ê¤ª¡¢»ä¤Ï»È¤ª¤¦¤È¤¹¤ëAVR¤Î¥Õ¥é¥Ã¥·¥åÍÆÎ̤ò¸«¤Æfar»È¤¦¤«»È¤ï¤Ê¤¤¤«¤ò»È¤¤Ê¬¤±
¤é¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤Þ¤¹¡£¤·¤«¤·¤Ê¤ó¤Ç¤â¤«¤ó¤Ç¤âfar¤Ë¤¹¤ë¤È¤Ù¤é¤Ü¤¦¤Ë¥ê¥½¡¼¥¹¤ò
¿©¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤ÇChaN»Õ¤ËÊ襤far¤Ï¤Ê¤ë¤Ù¤¯»ÈÍѤ·¤Ê¤¤Êý¤¬µÈ¤Ç¤¹¡£

£²¡¥¥Þ¥Ã¥Ô¥ó¥°¤¢¤ê&¥Õ¥é¥Ã¥·¥åÍÆÎÌ32kB¤Î¥Þ¥¤¥³¥ó¤È¤·¤Æ»È¤¦

ÂŶ¨°Æ¤½¤Î1¡£AVR128DA¤ò32kBʬ¤·¤«»È¤ï¤º»Ä¤ê96kB¤Ï¸«¤Ê¤«¤Ã¤¿¤³¤È¤Ë¤·¤¿¤é
32kByteÁ´°è¤ËPROGMEM¤·¤Ê¤¤¤Ç¤âconst¤À¤±¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤ë¤ï♥ŽÔޝŽÀް!
¤Ã¤Æ¤¢¤Û¤«¡ª


£³¡¥¥Þ¥Ã¥Ô¥ó¥°¤¢¤ê&rodata¤À¤±ºÇ½ª¥»¥¯¥¿¤Ë²¡¤·¹þ¤à¡£

ÂŶ¨°Æ¤½¤Î2.¥ê¥ó¥«¥¹¥¯¥ê¥×¥È¤ò¤¤¤¸¤¯¤êÅݤ·¤Ærodata¤À¤±96kB°Ê¹ß¤Ë²¡¤·¹þ¤ó¤Ç
¤³¤ÎÎΰè¤ò¥Þ¥Ã¥Ô¥ó¥°¤¹¤ë¡ª
¤³¤ì¤¬°ìÈÖÂŶ¨¤Ç¤­¤ÆÌµÆñ¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡©FONTX2¤ß¤¿¤¤¤ÊÇϼ¯¤Ç¤«¤¤
¥Õ¥¡¥¤¥ë¤ª¤«¤Ê¤¤¸Â¤ê¤Ï¥ê¡¼¥ÉÀìÍÑÎΰè32kB¤Ï½½Ê¬¤¹¤®¤ë¤È»×¤¤¤Þ¤¹¤è¤¥¡£




¥ê¥ó¥«¥¹¥¯¥ê¥×¥È¤Î¤¤¤¸¤ëºÝ¤Î¥ß¥½¤Ï__RODATA_PM_OFFSET__¤Ë¥Ç¡¼¥¿ÎÎ°è¤Ø
¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤¿¥¢¥É¥ì¥¹0x8000¤ò»ØÄꤹ¤ë¤³¤È¤Ètext¤Î¼¡¤Ërodata¤¬
Íè¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È(½ÅÍ×)
½çÈְִ㤨¤¿¤é¥Ó¥ë¥É¤¬Ä̤é¤Ê¤¤¤Ç¤¹¡£


¤³¤ó¤Ê¤ï¤±¤ÇAVR¡ÝDx¥·¥ê¡¼¥º¤ÎÇä¤ê¤Î°ì¤Ä¤À¤Ã¤¿¥Õ¥é¥Ã¥·¥åÎΰè¤Î¥Ç¡¼¥¿ÎÎ°è¤Ø¤Î
¥Þ¥Ã¥Ô¥ó¥°¤â°ì±þ»È¤¤¤â¤Î¤Ë¤Ê¤Ã¤Æ¤­¤Þ¤·¤¿¤Î¤Ç¾¯¤·¤Ïµß¤¤¤Ë¤Ê¤Ã¤¿¤«¤È»×¤¤¤Þ¤¹¡ª


º£²ó¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¢­¤Ë¤Ê¤ê¤Þ¤¹¡£²óÏ©¤ÏAVR128DA48-CuriosityNANO¤Ë½àµò¤·¤¿
¤Ä¤¯¤ê¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¤¬ÀßÄê¤òÊѤ¨¤Æ¥Ó¥ë¥É¤·¤¿¤éDB¥·¥ê¡¼¥º¤Ç¤â»ÈÍѲÄǽ¤Ç¤¹¡£
AVR-DA¤È¤«DB¤È¤«Çã¤Ã¤¿¤Ï¤¤¤¤¤â¤Î¤Î»ý¤ÆÍ¾¤·¤Æ¤ëÊý¤Ï¤ª»î¤·¤¯¤À¤µ¤¤¡£

AVR128DA48 CuriosityNANO TestProgram.



¡üAVR-XMEGA¡¢¤ªÁ°¤Ïµß¤¨¤Ê¤¤

¾å¤Ç¤Á¤ç¤Ã¤È¿¨¤ì¤¿far»È¤¦»È¤ï¤Ê¤¤¤ÎȽÄê¤Ç¤¹¤¬XMEGA¤Ë¤â²£Å¸³«¤·¤Þ¤·¤¿¡£
ÂоݤÏChaN»á¤ÎAVRÈÇxprintf¤È»ä¤ÎavrÈÇfontx2¥É¥é¥¤¥Ð¤Ç¤¹¡£
FONTX2¥É¥é¥¤¥Ð¤È¤«¥µ¥¤¥º¤Ç¤«¤¤¤«¤é¤µ¤¤¤Ã¤·¤ç¤Ã¤«¤éfarɬ¿Ü¤Ç¤·¤ç
¤È¤ª»×¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬ank¥³¡¼¥É¤À¤±¤Ê¤é10kbyte¤â¤Ê¤¤¤â¤Î¤¬
¤¢¤ë¤Î¤Ç¾¯¤·¤Ç¤â¥ê¥½¡¼¥¹¸º¤é¤¹¤¿¤á¤ËÄɲ䷤Ƥߤޤ·¤¿¡£

¤Ê¤ó¤È¤¤¤¦¤«4ǯ¤Ö¤ê¤Îxmega¤Î¹¹¿·¤ò¤·¤Þ¤·¤¿¤¬¤³¤³¤Þ¤Ç¥×¥í¥°¥é¥à¤Îµ¬ÌϤ¬
¤Ç¤«¤¯¤Ê¤ë¤È¤ä¤Ï¤êSTM32¤È¤«¤Î32bit¥Þ¥¤¥³¥ó¤Î¤Û¤¦¤¬»È¤¤¤ä¤¹¤¤¤Ê¤È´¶¤¸¤Þ¤¹¡£

°ìÊýAVR»È¤¦¤Ê¤é¥Õ¥é¥Ã¥·¥åÍÆÎÌ32kB°Ê²¼¤Î¤â¤Î¤ò»È¤Ã¤Æ¤¤¤¯¤Î¤¬Å¬ºàŬ½ê¤«¤Ê¤È
´¶¤¸¤Æ¤Þ¤¹¡£¿Ê²½¤ÎÂÞ¾®Ï©¤ËÆþ¤ê¤³¤ó¤ÀXMEGA¡£¤½¤³¤«¤éÀ¸¤Þ¤ì¤¿AVR-Dx¤Ï
¤É¤³¤Þ¤ÇÀµÅö¤Ê¿Ê²½¤ò³¤±¤é¤ì¤ë¤Î¤«¡©
¤³¤ì¤«¤é¤Î³èÌö¤ò¸«ÆÏ¤±¤¿¤¤¤È»×¤¤¤Þ¤¹¡ª




¤ª¤Þ¤±


͵פ·¤Ö¤ê¤ËXMEGA¿¨¤Ã¤¿¤«¤éA¤ÈAU¤Î°ã¤¤¤Ã¤Æ²¿¤À¤í¤¦¤ÈÄ´¤Ù¤¿¤éUSBµ¡Ç½ÄɲäÎ
¤Û¤«¤ËPORTL¤¬Â¸ºß¤·¤Ê¤¯¤ÆÉÔ²Äǽ¤À¤Ã¤¿4Port-EBI¤¬´°Á´¤Ë»ÈÍѤǤ­¤ë¤Î¤¬È½ÌÀ¡ª
º£¤µ¤éÃÙ¤¤¤ó¤ÀYO!

STM32G0¤ò»È¤Ã¤Æ¤ß¤ë2 -I2C¤ò»È¤Ã¤Æ¤ß¤ë¤Æ¤¤¤¦¤«¤½¤ì¤°¤é¤¤¤·¤«»×¤¤¤Ä¤«¤Ê¤¤-

ËÜǯÅÙ¤â¸åȾ¤ËÆþ¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬º£Ç¯ºÇ½é¤Ë¾Ò²ð¤·¤¿STM32G0¤ò
¤â¤¦¤Á¤ç¤Ã¤È»È¤Ã¤Æ¸«¤è¤¦¤È»×¤¤¤Þ¤¹¡£



¤µ¤Æ¡ÄËÜÍè¤Ï¤³¤Î¤è¤¦¤Ê¹½À®¤ÇI2C¥Ç¥Ð¥¤¥¹¤ò»È¤¦Í½Äê¤Ç¤·¤¿¤¬¡Ä
»Äǰ¤Ê¤¬¤é¥ê¥Þ¥Ã¥×¤Î´Ø·¸¾å¤«¤Ê¤êÆñ¤·¤¤¤³¤È¤¬È½ÌÀ¡Ä¥ª¥×¥·¥ç¥ó¥Ð¥¤¥È¤òÏ®¤é¤º
¼«Í³¤Ë»È¤¨¤ë¤Î¤Ï¤¿¤Ã¤¿¤Î3¥Ý¡¼¥È¤Î¤ß¡ª


¤·¤«¤âSTM32G031-Discovery¸ß´¹¤Ç¤ÏI2C¤ÎSDA¤Ç»È¤¦PA12(6Pin)¤¬
LED¤Ë¼è¤é¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤Î¤Ç¤ª¿É¤¤¡Ä


¤½¤ó¤Ê¤ï¤±¤ÇÀÞȾ¤Ç¤³¤Î¤è¤¦¤Ê²óÏ©¹½À®¤Ë¤·¤Æ¤ß¤Þ¤·¤¿¡£LED¤ÈI2C¤ÎSDA¤ò
´³¾Ä¤µ¤»¤Ê¤¤¤è¤¦¤Ë¤ï¤¶¤ï¤¶¹â®¥Ð¥Ã¥Õ¥¡¤ò¶´¤àËÜËöžÅݡĤÀ¤¬¤½¤ì¤¬¤¤¤¤
SWCLK,SWDIO,nReset¤Ï¤¤¤Ä¤Ç¤â»È¤¨¤ë¤è¤¦¤·¤Æ¤ª¤­¤Þ¤·¤¿¡£Àè¿Í¤ÎÊý¡¹¤â
I2CÀìÍÑ¤ÇÆ°¤«¤¹¤³¤È¤òÁ°Äó¤Ç¤³¤ì»È¤Ã¤Æ¤ë´¶¤¸¤Ç¤¹¤Í¡£

¤½¤ì¤È¤¢¤Þ¤Ã¤¿PC14(1Pin)¤Ï1wire¤Ç¤â¤Ö¤é²¼¤²¤ë¤È¤·¤Þ¤¹¤«¡Ä



¥Ô¥ó¤ÎÁªÄê¤Ë¤Ä¤¤¤Æ¤Ïº£²ó¤Ï²¼µ­¤ÎÊý¤Îµ­»ö¤ò»²¹Í¤Ë¤·¤Þ¤·¤¿¡£
¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£

CrescentÍÍ
http://meerstern.seesaa.net/article/477348927.html
¥·¥¹¥Æ¥à´ØÏ¢¥Ô¥ó¤ÎGPIO²½¤ËºÝ¤¹¤ëÃí°Õ¤ò¾Ü¤·¤¯²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£

caa45040ÍÍ
https://qiita.com/caa45040/items/a6ca28ae4b1dfa5c489c
¥ª¥×¥·¥ç¥ó¥Ð¥¤¥È¤ò¤¤¤¸¤ê¥ê¥¹¥¯¤òÉé¤Ã¤Æ¤¿¤¯¤µ¤óÀ½ºî¤µ¤ì¤Æ¤ª¤é¤ì¤Þ¤¹


¤Í¤à¤¤¤µ¤ó¤âS-5851A»ý¤Ã¤Æ¤¤¤ë¤Î¤Ç¤»¤Ã¤«¤¯¤À¤«¤é¤Þ¤Í¤µ¤»¤Æ¤â¤é¤¤¤Þ¤¹
±Õ¾½¤Ï¤â¤Á¤í¤ó¥É¥Ã¥È¥Þ¥È¥ê¥¯¥¹¤ÊÃæ²ÚI2C±Õ¾½¤Ç¤¹¡ª
ROM¤¬32Kbyte¤¢¤ë¤Î¤Çfontx2¤Çank¥Õ¥©¥ó¥È¤¯¤é¤¤¤Ïɽ¼¨¤Ç¤­¤Þ¤¹¤Í¡ª
±Õ¾½¤Ë¤Ä¤¤¤Æ¤Ï²áµîµ­»ö¤Î¤³¤Á¤é¤ò¤´»²¾È¤¯¤À¤µ¤¤¡£
°ì»þ´üaitendo¤ÇÇä¤Ã¤Æ¤¿¤Î¤Ç»ý¤Ã¤Æ¤ëÊý¤Ï¤Þ¤À¤¤¤ë¤«¤â¡ª¡©




ÆÃ¤Ë¥ê¥Þ¥Ã¥×¤È¤«¤Ï¹Ô¤ï¤º¡¢¥Ñ¥ï¡¼¥ª¥ó¥ê¥»¥Ã¥È¸å¤ÎGPIO¥Ý¡¼¥È¤ò¤½¤Î¤Þ¤Þ
»ÈÍѤ¹¤ë¤Î¤Ç5Pin¤¬I2C2¤ÎSCL,6Pin¤¬I2C2¤ÎSDA¤È¤·¤Þ¤¹¡£


¤Þ¤¿¡¢S-5851A¤Î¥¢¥É¥ì¥¹¤ÏAD1=1,AD0=0¤È¤·¤Æ
0x94(7¥Ó¥Ã¥È¥¢¥É¥ì¥¹¤À¤È0x4A)¤Ë¡£



¤¢¤È¤ÏSTM32F03¤Î¥×¥í¥¸¥§¥¯¥È¤«¤éI2C¥é¥¤¥Ö¥é¥ê¤ò¥µ¥¯¤Ã¤È°Ü¿¢¤·Æ°ºî´°Î»¡ù
¤¹¤´¤¤¤ä¤Ã¤±¤Ä´¶¤Ç¤¹¤¬¤¢¤Ã¤±¤Ê¤¯¤Ç¤­¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¡£¤µ¤¹¤¬»ä

STM32G0¤ÎI2C¼þ¤ê¤ÏSTM32F3¤äF0·Ï¤È¤Û¤ÜƱ¤¸¥ì¥¸¥¹¥¿¹½À®¤Ê¤Î¤Ç¤ä¤ä¤³¤·¤¤
¥¿¥¤¥ß¥ó¥°¥ì¥¸¥¹¥¿¤ÎÀßÄêÃͤ⥿¥¤¥ß¥ó¥°ÃÍ·×»»µ¡¤Ç»»½Ð²Äǽ¤Ç¤¹¡£



STM32¤ÎHSI¤Ï16MHz,¤½¤³¤«¤éSysClock¤Î64MHz¤Ë¤·¤Þ¤¹¡£
¤³¤ÎÀßÄê¤Ç100kHz¤ÎI2C¥¯¥í¥Ã¥¯¤òÀ¸À®¤¹¤ë¿ôÃͤòÂåÆþ¤·¤Þ¤¹¡£


¥ª¥·¥í¥¹¥³¡¼¥×¤Ç¼ÂºÝ¤ÎÇÈ·Á¤ò¥­¥ã¥×¥Á¥ã¤·¤¿¤È¤³¤í¤Ç¤¹¡£¤­¤Ã¤«¤ê100kHz¤Ï
½Ð¤Þ¤»¤ó¤¬¤Þ¤¡¤À¤¤¤¿¤¤¶á¤¤¤Ç¤¹¤Í¡£²èÁü¤ÏSTTS751¤È¤ÎÄÌ¿®(I2C¥¢¥É¥ì¥¹0x72¡¢
7¥Ó¥Ã¥È¥¢¥É¥ì¥¹¤Ç¤Ï0x39)¤Ç¤¹¡£
¤³¤ó¤Ê´¶¤¸¤ÇI2C¤Î²òÀϤËPicoscopeÂç³èÌö¤Ç¤¹¤ï¡£
¤½¤¦¤À¤ÍÀëÅÁ¤À¤Í¡£



¤½¤ó¤Ê¤ï¤±¤Ç½Å¤¤¹ø¤ò¾å¤²¤ÇSTM32G0¤Î³¤­¤ä¤Ã¤Æ¤ß¤Þ¤·¤¿¤¬¤¢¤È¤«¤éÍ褿¿Í¤Ë
¤É¤ó¤É¤óÀè¤ò±Û¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬¤¤¤Ä¤â¤Î´¶¤¸¤Ç¤ä¤Ã¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£

¤½¤·¤Æ¡Ä¾®¤µ¤Êµð¿ÍSTM32G0¤Ç¼¡Æ°¤«¤¹¥Ç¥Ð¥¤¥¹¤Ï¡Ä


¤³¤¤¤Ä¤À¡ª
¤Ä¤Å¤¯¡ª


¤ª¤Ã¤È¡¼¤½¤ÎÁ°¤Ëµ×¡¹¤Î¿·µ¬¥×¥í¥¸¥§¥¯¥È¤Ë¤Ê¤ê¤Þ¤¹¤¬¤³¤Á¤é¤Ë¥¢¥Ã¥×¥í¡¼¥É¤·¤Æ
¤ª¤ê¤Þ¤¹¤Î¤Ç¼«¸ÊÀÕǤ¤Ç¤É¤¦¤¾¡£

¤¤¤í¤¤¤í»î¤¹46(+2020ǯȿ¾Ê²ñ)

¤Í¤à¤¤¤µ¤ó¤Ï°­¤¯¤Ê¤¤Á´Éô¥³¥í¥Ê¤Î¤»¤¤Á´Éô¡ª
È¿¾Ê²ñ½ªÎ»¡ª




¡Ä
¤µ¤ÆËÜÂê¤ËÆþ¤ê¤Þ¤¹¡Ä




¡üOpenOCDºÇ¶á¤Î¹¹¿·¥È¥Ô¥Ã¥¯
Æü¡¹Ãå¼Â¤Ëµ¡Ç½¤òÁý¶¯¤·¤Æ¤¤¤ëOpenOCD¡£¤³¤³¿ô¤«·î¤Î¹¹¿·¤Ç¤á¤Ü¤·¤¤¹¹¿·¤ò
¥Ô¥Ã¥¯¥¢¥Ã¥×¤·¤Æ¤ß¤Þ¤¹¡£

£±¡¥QSPI/OCTOSPI¤Î¥µ¥Ý¡¼¥È¤¬¤Ä¤¤¤Ë¸ø¼°¼ÂÁõ¡ª¡ª
²¿Ç¯ÂÔ¤¿¤»¤¿¤ó¤ÀYO!
¤Í¤à¤¤¤µ¤óÂÔ˾¤ÎQSPI-ROM¤ÎOpenOCD¤«¤é¤ÎÆÉ¤ß½ñ¤­µ¡Ç½¤¬¤è¤¦¤ä¤¯¸ø¼°¤Ë
¥Þ¡¼¥¸¤µ¤ì¤ë±¿¤Ó¤È¤Ê¤ê¤Þ¤·¤¿¡£¤Í¤à¤¤¤µ¤ó¤ÎSTM32F7¤äH7¤ÎºîÎã¤Çmakefile
¤ß¤¿¤éµ¤ÉÕ¤¤¤¿Êý¤â¤¤¤ë¤È»×¤¤¤Þ¤¹¡£°ì±þ°ÊÁ°¤«¤é¥Ñ¥Ã¥Á¤òÅö¤Æ¤¿¥Ó¥ë¥É¤Ï
¸ø³«¤·¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¤Ê¤«¤Ê¤«¤Ë¤Ã¤Á¤Ë¤Ê¼ûÍפÀ¤Ã¤¿¤Î¤Çɽ¤Î½Ð¤µ¤º¤Ë¤·¤Æ
¤ª¤­¤Þ¤·¤¿¡£

¸ø¼°¥Þ¡¼¥¸¤Ë¤¢¤¿¤ê¡¢¼ã´³¤Îư¤«¤·Êý¤Îº¹°Û¤¬È¯À¸¤·¤Æ¤Þ¤·¤¿¤Î¤Ç¤³¤Á¤é¤Ç
µÛ¼ý¤·¤Æ¤ª¤ê¤Þ¤¹¡£

makefile¤Ï516¹ÔÌܤ«¤é¡¢

¼ÂºÝ¤Ë½ñ¤­¹þ¤ß¤Ë»ÈÍѤ¹¤ëOpenOCD¤Îcfg¤Ï»ä¤Î¥Ð¥¤¥Ê¥êƱº­¤Îstm32h7disco_dap_flash.cfg
¤Î170¹ÔÌܤ¯¤é¤¤¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¼ÂºÝ¤ËQSPI-ROM¤ËÆÉ¤ß½ñ¤­¤·¤¿ÍͻҤϤ³¤ó¤Ê´¶¤¸¤Ç¤¹¡£
¢­mass_erase¤Î»þ

> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/stm32h7disco_dap_flash.cfg -c "eraser_qspi"
Open On-Chip Debugger 0.11.0-rc1+dev-00010-gc69b4deae (2020-12-27-08:37)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
force hard breakpoints
Info : STLINK V3J4M2 (API v3) VID:PID 0483:374E
Info : Target voltage: 3.219171
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : clock speed 1000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x6ba02477
Info : stm32h747xih6.cpu0: hardware has 8 breakpoints, 4 watchpoints
Error: stm32h747xih6.cpu0 -- clearing lockup after double fault
Polling target stm32h747xih6.cpu0 failed, trying to reexamine
Info : stm32h747xih6.cpu0: hardware has 8 breakpoints, 4 watchpoints
Info : starting gdb server for stm32h747xih6.cpu0 on 3333
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Info : flash1 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
Info : flash2 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:02

¢­FontX2¥Õ¥¡¥¤¥ë¤Ê¤É¤Î¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤ó¤À»þ
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/stm32h7disco_dap_flash.cfg -c "mt_flash_qspi lib/FONTX2/inc/fonts/ILFONT/ILGZ24XF.FNT 0x90010000"
Open On-Chip Debugger 0.11.0-rc1+dev-00010-gc69b4deae (2020-12-31-18:42)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
force hard breakpoints
Info : STLINK V3J4M2 (API v3) VID:PID 0483:374E
Info : Target voltage: 3.217121
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : Unable to match requested speed 1800 kHz, using 1000 kHz
Info : clock speed 1000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x6ba02477
Info : stm32h747xih6.cpu0: hardware has 8 breakpoints, 4 watchpoints
Info : starting gdb server for stm32h747xih6.cpu0 on 3333
Info : Listening on port 3333 for gdb connections
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08050484 msp: 0x20020000
Info : flash1 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
Info : flash2 'micron mt25ql512' id = 0x20ba20 size = 65536kbytes
Info : Device: STM32H74x/75x
Info : flash size probed value 2048
Info : STM32H7 flash has dual banks
Info : Bank (0) size is 1024 kb, base address is 0x08000000
Info : Device: STM32H74x/75x
Info : flash size probed value 2048
Info : STM32H7 flash has dual banks
Info : Bank (1) size is 1024 kb, base address is 0x08100000
Info : wrote 636586 bytes from file lib/FONTX2/inc/fonts/ILFONT/ILGZ24XF.FNT in 17.585402s (35.351 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:19



QSPI¤ÎÆÉ¤ß½ñ¤­¤Ë´Ø¤·¤Æ¤ÎÃí°ÕÅÀ¤Ç¤¹¤¬¸½¾õ¤Ï´°Á´°ÂÄê¤È¤Ï¸À¤¨¤º¡¢¾Ãµî¤ä
½ñ¤­¹þ¤ß¤ò¹Ô¤¦ÅÙ¤ËÅŸ»¤òÅêÆþ¤·¤Ê¤ª¤µ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
¤¤¤º¤ì¤Ï²ò·è¤µ¤ì¤ë¤Ç¤·¤ç¤¦¤¬¤³¤ÎÅÀ¤À¤±¤Ï¤´Î±°Õ¤¯¤À¤µ¤¤¡£


£²¡¥ST-Link¤Ç16bit¤Î¥á¥â¥êÆÉ¤ß½ñ¤­¤¬¼ÂÁõ¤µ¤ì¤ë
²¿Ç¯ÂÔ¤¿¤»¤¿¤ó¤ÀYO!¤â¤¦7ǯ¤¯¤é¤¤¤¿¤Ã¤Æ¤ëYO¡ª
º£¹¹¤â¤¦ÃÙ¤¤¤è¤¥¡ª¡ª¡ª

FM3¤Î¥Õ¥é¥Ã¥·¥å¥³¥ó¥È¥í¡¼¥é¤¿¤¿¤¯°Ê³°¤Ë²¿¤ÎÍѤ¬¤¢¤ë¤Î¤«¡ª¡©
º£¤È¤Ê¤Ã¤Æ¤Ï»È¤¤Æ»¤¬Ê¬¤«¤ê¤Þ¤»¤ó¡Ä

¡üarm-gccÄê´ü¹¹¿·
arm-gcc¤â12·î¤Ë¹¹¿·³Ý¤«¤Ã¤Æ¤Þ¤·¤¿¡£
¼ç¤ÊÊѹ¹ÅÀ¤Ï¤Ä¤¤¤ËGCC10.0¤Ë¤Ê¤Ã¤¿¤³¤È¤Ç¤·¤ç¤¦¤«¡£

¤È¤ê¤¢¤¨¤ºSTM32H7¤Î¥Ó¥ë¥É¥µ¥¤¥º¤ÎÈæ³Ó¡Ä
¢­Á°²ó¤Î
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2019-q3-update) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
Copyright (C) 2018 Free Software Foundation, Inc.
Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 768116 0 768116 bb874 main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
765464 2652 2383344 3151460 301664 main.elf
main.elf :
section size addr
.text 0xbaca0 0x8000000
.ctors 0x0 0x80baca0
.dtors 0x0 0x80baca0
.ARM.exidx 0x8 0x80baca0
.itcm 0x170 0x0
.data 0xa5c 0x24000000
.bss 0x11c68 0x24000a60
.heap 0x0 0x240126c8
.dtcm 0x20c 0x20000000
.stack 0x4 0x2000020c
.ram1_d2 0x0 0x30000000
.ram2_d2 0x0 0x30020000
.ram3_d2 0x0 0x30040000
.ram4_d3 0x0 0x38000000
.batram 0x0 0x38800000
.extram 0x233f78 0xd0000000
.qspirom 0x0 0x90000000
.comment 0x76 0x0
.debug_aranges 0x4d48 0x0
.debug_info 0x186579 0x0
.debug_abbrev 0x1f290 0x0
.debug_line 0xba997 0x0
.debug_frame 0x16ca8 0x0
.debug_str 0x1c2fb 0x0
.debug_loc 0x1439d1 0x0
.ARM.attributes 0x32 0x0
.debug_ranges 0x1dc00 0x0
Total 0x6fab68



> Process Exit Code: 0
> Time Taken: 02:09

¢­º£²ó¤Î
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10-2020-q4-major) 10.2.1 20201103 (release)
Copyright (C) 2020 Free Software Foundation, Inc.
Built Object Informations:
=== Total Binary Size ===
text data bss dec hex filename
0 770912 0 770912 bc360 main.hex
=== Verbose ELF Size ===
text data bss dec hex filename
768260 2652 2383336 3154248 302148 main.elf
main.elf :
section size addr
.text 0xbb780 0x8000000
.ctors 0x0 0x80bb780
.dtors 0x0 0x80bb780
.ARM.exidx 0x8 0x80bb780
.itcm 0x17c 0x0
.data 0xa5c 0x24000000
.bss 0x11c60 0x24000a60
.heap 0x0 0x240126c0
.dtcm 0x20c 0x20000000
.stack 0x4 0x2000020c
.ram1_d2 0x0 0x30000000
.ram2_d2 0x0 0x30020000
.ram3_d2 0x0 0x30040000
.ram4_d3 0x0 0x38000000
.batram 0x0 0x38800000
.extram 0x233f78 0xd0000000
.qspirom 0x0 0x90000000
.comment 0x4d 0x0
.debug_aranges 0x4d20 0x0
.debug_info 0x118dd1 0x0
.debug_abbrev 0x18cba 0x0
.debug_line 0xb91af 0x0
.debug_frame 0x13678 0x0
.debug_str 0x1bc3c 0x0
.debug_loc 0x14a497 0x0
.ARM.attributes 0x32 0x0
.debug_ranges 0x1cd68 0x0
Total 0x687fd4



> Process Exit Code: 0
> Time Taken: 02:07

¤¦¡É¡Ä¥µ¥¤¥ºÁý¤¨¤Æ¤ë¡Ä

¼Â¤Ï¤Á¤ç¤Ã¤Èº¤¤Ã¤¿¤³¤È¤¬¤¢¤Ã¤ÆGCC10.0¤Ë¾å¤¬¤Ã¤¿¤»¤¤¤ÇChaN»á¤ÎFatFs¤Ç
¥ï¡¼¥Ë¥ó¥°¤¬½Ð¤Á¤ã¤Ã¤Æ¤¤¤Þ¤¹¡£

¢¬2048¹ÔÌܤǥ¥Ë¥ó¥°¤¬½Ð¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤ÏÇÛÎó¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬0¤«¤é¤µ¤é¤Ë¥Ç¥¯¥ê¥á¥ó¥È¤µ¤ì¤ë
¥³¡¼¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤È¿ä¬¤µ¤ì¤Æ¤È¤­¤Ëȯư¤µ¤ì¤ë¤è¤¦¤Ç¤¹¡£
	/* itoa (hexdecimal) */
i = 7;
do {
c = (BYTE)((seq % 16) + '0');
if (c > '9') c += 7;
ns[i--] = c;
seq /= 16;
if(i==0) break; /* Nemui */
} while (seq);
ns[i] = '~';

¢¬¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬0¤Î»þ¤ÎȽÄêʸÄɲ䷤ƤªÃã¤òÂù¤·¤Æ¤Þ¤¹¡Ä
ChaN¤µ¤ó¤³¤ì¸«¤Æ¤¿¤é¸ú²ÌŪ¤Ê¥ï¡¼¥Ë¥ó¥°Âкö¤ª´ê¤¤¤·¤Þ¤¹¡ª£±£±¡ª¡ª¡ª


¤¢¤È¤³¤ì¤Ïµ¤¤Ë¤·¤Ê¤¤¤Ç¤¤¤¤¤é¤·¤¤¤Ç¤¹¡Ä


¤½¤ì¤ÈSTM32F7discovery¤Ë¤ª¤¤¤ÆºÇŬ²½¤ÎÌäÂê¤Ë°ú¤Ã¤«¤«¤Ã¤ÆÀµ¾ï¤Ë
LCD¤¬É½¼¨¤µ¤ì¤Ê¤¯¤Ê¤ë¸½¾Ý¤¬È¯À¸¤·¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤¹¤¬pragma¤ÇºÇŬ²½¤ò
ÀڤäÆÂн褷¤Æ¤Þ¤¹¡Ä¤â¤Ã¤È¤¤¤¤ÊýË¡¤¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬º£¤Ï¤³¤ì¤¬
ºÇŬ²ò¡Ä



¡ü½©·î¤ÇSTM32G0¡¢STM32L0Äɲ᪡ª
¤Ê¤ó¤È½©·î¤µ¤ó¤è¤êSTM32L0¤È8pin¤ÎSTM32G0¤¬Äɲäµ¤ì¤Æ¤Þ¤¹¡ª¡ª


¼Â¤Ï¤¹¤Ç¤ËÆþ¼ê¤·¤ÆÆ°ºî³Îǧ¤â¹Ô¤Ã¤Æ¤Þ¤¹¤¬¤³¤³¤ÇÏ乤ˤϿ¤¹¤®¤ë
ÆâÍÆ¤Ç¤¹¤Î¤Ç¼¡²ó°Ê¹ß¤Ë¤³¤¦¤´´üÂÔ¡ª¡ª¡ª¡ª


¡ü°Â²Á¤ÊAVR128DA48ɾ²Á¥Ü¡¼¥É¥²¥Ã¥Ä¡ª

AVR¤ÎÀµÅö¿Ê²½·Ï¤ÎAVR128¥·¥ê¡¼¥º¡£
AVR128DA48¤ÎĶ³Ê°Â¤Îɾ²Á¥Ü¡¼¥É¤ò¼ê¤ËÆþ¤ì¤Þ¤·¤¿¡ª¡ª
¤½¤Î̾¤âAVR128DA48 Curiosity Nano¡ª¡ª¡ª
¤·¤«¤âÅ۵ÊÑ´¹µ¡Ç½¤ò»ý¤Ã¤¿mEDBG¤Ä¤­¡ª¡ª

¤â¤¦AVR¥é¥¤¥¿¤Ïºî¤ë»þÂ夫¤é°Â²Á¤ÇÇ㤦»þÂå¤ËÊÑÁ«¤·¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤Í¡Á

¤Á¤Ê¤ß¤Ëavrdude¤Ï¥Ó¥ë¥É¥¤¥ó¤µ¤ì¤¿mEDBG¤ÈAVR128¥·¥ê¡¼¥º¤Ë¤ÏÂбþ¤·¤Æ
¤Ê¤«¤Ã¤¿¤Î¤Ç¤¹¤¬¿À¥Ñ¥Ã¥Á¤Ë¤è¤Ã¤Æ¼«Í³¼«ºß¤Ë¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡ª¡ª

¤³¤Á¤é¤âSTM32G0¤ÈƱ¤¸¤¯Íèǯ¤ß¤Ã¤Ã¤Ã¤Ã¤Ã¤Ã¤Ã¤Ã¤Ã¤Á¤ê¤ÈÆÃ½¸¤µ¤»¤Æ¤â¤é¤¤
¤Þ¤¹¤Î¤Ç´üÂÔ¤·¤Æ¤ªÂÔ¤Á¤¯¤À¤µ¤¤¡ª¡ª

¤È¸À¤¤¤¿¤¤¤È¤³¤í¤Ç¤¹¤¬Àè¹Ô¤ÇAVR128DA48 Curiosity Nano¤ËÂбþ¤·¤¿
avrdude¤ò¸ø³«¤·¤Æ¤ª¤ê¤Þ¤¹¡ª¡ª¡ª
¶½Ì£¤¬¤¢¤ëÊý¤Ï¤É¤ó¤É¤ó»È¤Ã¤Æ¤¯¤À¤µ¤¤¡ª¡ª¡ª









¡Ä¤È¤¤¤¦¤ï¤±¤Çº£Ç¯¤â¶î¤±¹þ¤ß¤Ç¤Ð¤¿¤Ð¤¿¤·¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬¤¿¤¯¤µ¤ó
Ç㤤¹þ¤ó¤À¥Þ¥¤¥³¥ó¤ä¥»¥ó¥µ´ðÈĤȤ«¤Îɾ²Á¤âÍèǯ¤â¿Ê¤á¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡Ä
³§¤µ¤Þ¤â¤è¤¤¤ªÇ¯¤ò¡Á


















>¤Í¤à¤¤¤µ¤ó¡Å¡ÅDropBox¤Î¸«¤¨¤Ê¤¯¤Ê¤Ã¤¿²èÁüŽÉŽÎ޳ŽÊ¡Ä
Íèǯ¤«¤éËܵ¤½Ð¤¹¡ª¡ª¡ª¡ª¡ª£±¡ª¡ª

STM32H7¤ò»È¤Ã¤Æ¤ß¤ë4 -¥­¥ã¥Ã¥·¥å¡¦¥ï¥ó¥À¥ê¥ó¥°(ÃæÊÓ)-

¢«Á°²ó¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¼¡²ó¢ª

¼«Âð¤ÎPC´Ä¶­¤ò´°Á´¤ËWin10¤ËÀÚ¤êÂØ¤¨¤Þ¤·¤¿¡£
¥Ï¡¼¥É¥¦¥¨¥¢¤â11ǯ¤Ö¤ê¤Ë¿·Ä´¤·¤Æ¥á¥â¥ê¤â16GB¤â¾è¤Ã¤±¤Æ¤Þ¤¹¡ª¡ª¡ª¡ª
¥·¥¹¥Æ¥à¥Ç¥£¥¹¥¯¤âºÇ¿·¤ÎM.2SSD¤Ë´¹Áõ¤·¤Æ¤³¤ì¤Ç¸þ¤³¤¦20ǯ¤ÏÀ臘¤³¤È¤¬
¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡ª¡ª¡ª¡ª¡ª


¤µ¤Æ¡¢º£²ó¤ÏÁ°²óÀâÌÀ¤·¤¿³Æ¼ï¥­¥ã¥Ã¥·¥åÀßÄ꤬¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Ë¤É¤¦±Æ¶Á
¤·¤Æ¤¯¤ë¤Î¤«¤ò¼Âưºî¤ò¸ò¤¨¤ÆÀâÌÀ¤·¤Æ¤¤¤³¤¦¤È¤ª¤â¤¤¤Þ¤¹¡£


Èæ³Ó¤È¤¤¤¦¤³¤È¤Çlibpng(ÇÜÀºÅÙÉâÆ°¾®¿ôÅÀ±é»»¤¢¤ê)¤Î¥Ç¥³¡¼¥É/ɽ¼¨»þ´Ö¤ò·×¬¤·¤Æ
¤¤¤­¤Þ¤¹¡£ŽÃ޽ŽÂÍÑpng²èÁü¤Ï¼«ºî¤ÎÆú΢ŪÈþ¾¯½÷޲Ž×޽ŽÂ¤ò»ÈÍѤ·¤Æ¤Þ¤¤¤ê¤Þ¤¹¡ª
ÆÍ¤Ã¹þ¤ß¤Ï¼õ¤±ÉÕ¤±¤Þ¤»¤ó¡ª¡ª¤¤¤Ê¤¤¤µ¤ó¤«¤ï¤¤¤¤¡ª!1¡ª¡ª¡ª1¡ª


¤Þ¤¿¡¢png²èÁü¤òÆÉ¤ß½Ð¤¹¥¹¥È¥ì¡¼¥¸¤Ï°ÊÁ°¾Ò²ð¤·¤¿»º¶ÈÍÑMicroSD¤Î64GBÉʤò»ÈÍÑ
¤·¤Þ¤¹¡£°Â¤¯¤Æ¿®ÍêÀ­¤¬¤¢¤Ã¤Æ»È¤¤¾¡¼ê¤¬Îɤ¤¤Î¤Ç½ÅÊõ¤·¤Þ¤¹♥


¡ü¥­¥ã¥Ã¥·¥å̵¤·

¤Þ¤º¤Ï¥Ç¡¼¥¿¥­¥ã¥Ã¥·¥å¤½¤Î¤â¤Î¤ò̵¸ú¤Ë¤·¤Þ¤¹¡£
ËÜÅö¤ÏAXI-SRAM¤À¤±Ìµ¸ú¤Ë¤·¤¿¤«¤Ã¤¿¤Î¤Ç¤¹¤¬¤Ê¤¼¤«png¤Î¥Ç¥³¡¼¥É»þ¤ËHardFault¤Ë
¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç»ÅÊý¤Ê¤¯¤¼¤ó¤Ö¥­¥ã¥Ã¥·¥åOFF¤Ë¤·¤Æ¤Þ¤¹¡£

¥­¥ã¥Ã¥·¥å¸ú¤¤¤Æ¤Ê¤¤¤»¤¤¤ÇÃÙ¤¤¤Î¤Ç¤¹¤¬AXI¥Ð¥¹¤Î¥¯¥í¥Ã¥¯¤¬200MHz¤È¹â®¤Ê¤Î¤Ç
¤½¤ì¤Ç¤â½½Ê¬"Áᤤ"¤Ç¤¹¤Í¡Ä

¡ü¥é¥¤¥È¥Ð¥Ã¥¯&¥é¥¤¥È¥¢¥í¥±¡¼¥È¤Ê¤·

¤³¤Á¤é¤Ï¤¤¤Ä¤â¤Î¤Ç¸ø³«¤·¤Æ¤¤¤ë¥­¥ã¥Ã¥·¥åÀßÄê¤È¤Ê¤ê¤Þ¤¹¡£
¥é¥¤¥È¥¹¥ë¡¼¤Î¥¨¥é¥Ã¥¿¤¬Ç§ÃΤµ¤ì¤Æ¤·¤Þ¤Ã¤¿º£¤³¤ì¤ËÍê¤é¤¶¤ë¤òÆÀ¤Þ¤»¤ó¡£

¡ü¥é¥¤¥È¥Ð¥Ã¥¯&¥é¥¤¥È¥¢¥í¥±¡¼¥È¤¢¤ê


¥é¥¤¥È¥¢¥í¥±¡¼¥È¤Ê¤·¤È¤Û¤È¤ó¤ÉÊѤï¤é¤º¸íº¹ÄøÅ٤Ǥ¹¡£

¤³¤ì¤Ê¤é¥é¥¤¥È¥¢¥í¥±¡¼¥È¤¢¤ê¤Ç¤¤¤¤¤¸¤ã¤ó¤È¤ª»×¤¤¤Ç¤·¤ç¤¦¤¬¡Ä


»Äǰ¤Ê¤¬¤éLTDC¤ÈÁêÀ­¤¬Èó¾ï¤Ë°­¤¯LTDC¤¬´É³í¤¹¤ë¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡Îΰè¤Ë¤³¤Î
ÀßÄê¤ò¹Ô¤Ã¤Æ¤¤¤ë¤È¤´Í÷¤ÎÄ̤êɽ¼¨¤¬Êø¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡Ä
°ì±þÂкö¤Ç¤­¤Ê¤¤¤³¤È¤â¤Ê¤¤¤Ç¤¹¤¬¥­¥ã¥Ã¥·¥å¥³¥ó¥È¥í¡¼¥ë´Ø¿ô¤ò¤¢¤Á¤³¤Á¤ËÊü¤ê
¤³¤Þ¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤¿¤áÁ´¤¯¸½¼ÂŪ¤Ç¤Ï¤Ê¤¤¤Ç¤¹¡£

¤½¤ì¤Ê¤éSDRAM¤Ë¤Ï¤½¤ÎÀßÄꤷ¤Ê¤¤¤ÇAXI-SRAM¤À¤±¤Ë¤¹¤ì¤Ð¤È¤ª»×¤¤¤Ç¤Ç¤·¤ç¤¦¤¬
¤Í¤à¤¤¤µ¤ó¤â¤½¤¦¤·¤è¤¦¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¤Ê¤ó¤ÈSAI¤È¤âÁêÀ­¤¬°­¤¯¹â¥Ó¥Ã¥È¥ì¡¼¥È¤Î
²»À¼ºÆÀ¸»þ¤ËŽÌŽÞŽÁŽÌŽÞŽÁ¥Î¥¤¥º¤¬Æþ¤ê¤ä¤¬¤ê¤Þ¤¹orz¤³¤Á¤é¤â¤¢¤Á¤³¤Á¤Ç¥­¥ã¥Ã¥·¥å¥³¥ó¥È
¥í¡¼¥ë¤·¤Þ¤¯¤Ã¤¿¤éÌäÂê¤Ê¤¤¤Î¤Ç¤¹¤¬¤½¤ó¤Ê¤ó¤¹¤ë¤¯¤é¤¤¤Ê¤é¥é¥¤¥È¥Ð¥Ã¥¯¡Ü¥é¥¤¥È
¥¢¥í¥±¡¼¥È¤Ê¤·¤Î¤Û¤¦¤Ç¤¤¤¤¤ä¤È¤Ê¤êº£¤Ë»ê¤Ã¤¿¼¡Âè¤Ç¤¹¡£

¡ü¥é¥¤¥È¥¹¥ë¡¼

º£¤È¤Ê¤Ã¤Æ¤Ï¥¨¥é¥Ã¥¿¤Ç¶Ø¤¸¼ê¤Ë¤Ê¤Ã¤¿¥é¥¤¥È¥¹¥ë¡¼¥â¡¼¥É¤Ç¤¹¡£
¥é¥¤¥È¥Ð¥Ã¥¯¤è¤êÃÙ¤¤¤Ç¤¹¤¬¥­¥ã¥Ã¥·¥å̵¤·¤è¤êÃÇÁ³ÁᤤÍýͳ¤Ï¼Â¥á¥â¥ê¤Ë½ñ¤­¹þ¤ß¤Ë
¤¤¤Ã¤¿¤È¤­¤Ë¥é¥¤¥È¥Ð¥Ã¥Õ¥¡¤¬¸ú¤¤¤ÆÂ®ÅÙ¤¬¾å¤¬¤Ã¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£
¤¤¤Á¤¤¤Áclean¤·¤Ê¤¤¤ÇºÑ¤à¤«¤é³Ú¤À¤Ã¤¿¤ó¤Ç¤¹¤±¤É¤Í¥é¥¤¥È¥¹¥ë¡¼¡Ä



¡ü¤ª¤Þ¤±¡¦Ž¶ŽØŽ¶ŽØŽÁޭްŽÝ¤ÎF7

STM32F769I-Disco¤Ç¤âƱ¤¸MicroSD¤ò»È¤Ã¤Æ¤ä¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ò½ü¤¯DMA¤ÎÁ÷¼õ¿®¥Ð¥Ã¥Õ¥¡¡¦³ÆÊÑ¿ô¡¦¥Ò¡¼¥×Îΰè¤ò¥­¥ã¥Ã¥·¥å
¤·¤Ê¤¯¤Æ¤âĶ¹â®¤Ëưºî¤Ç¤­¤ëDTCM¤ËÀßÄꤷ¤ÆÆ±¤¸¤è¤¦¤Ë¤ä¤Ã¤Æ¤ß¤¿¤Î¤¬¤³¤Á¤é¡£
H7¤ÈÈæ¤Ù¤ë¤È¥³¥¢¥¯¥í¥Ã¥¯¤¬1/2¤Î200MHzưºî¤Ê¤Î¤Ç¤¹¤¬°Õ³°¤È·òÆ®¤·¤Æ¤Þ¤¹¡£
F7¥·¥ê¡¼¥º¤Ç¤ÏDTCMÎΰè¤Ç¤âDMA¤Ç¤­¤ë¤Î¤Ç¤³¤Î¤è¤¦¤Ê·ÝÅö¤¬¤Ç¤­¤ë¤Î¤Ç¤¹¤¬
H7¤ÏľÀܤǤ­¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤Î¤Ç¥é¥¤¥È¥¹¥ë¡¼¤¬»È¤¨¤Ê¤¯¤Ê¤Ã¤¿¤Î¤â¤¢¤Ã¤Æ
DMA¤¹¤ë¤À¤±¤Ç¤â¤¤¤í¤ó¤Ê¹©Éפ¬É¬ÍפǤ¹¡£

¼¡²ó¤ÏSTM32H7¤Ç¥­¥ã¥Ã¥·¥å¤ò¸ú¤«¤»¤¿¾õÂÖ¤ÇDMA¤ò¤É¤Î¤è¤¦¤Ë°ÂÄꤷ¤ÆÆ°¤«¤·¤Æ
¤¤¤±¤ÐÎɤ¤¤Î¤«¤ò²òÀ⤷¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£


20191104ÄÉ:
jujurou¤µ¤ó¤¬F7¤Ç¤ÏSDRAM¤Î¥é¥¤¥È¥Ð¥Ã¥¯+¥é¥¤¥È¥¢¥í¥±¡¼¥È¤Ê¤·¤Ç¤âDMA2D¤Ç
ɽ¼¨¤ª¤«¤·¤¯¤Ê¤ë¤ÈÊó¹ð¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç
¤Í¤à¤¤¤µ¤ó¤âÄɤäÆÃΤé¤Ù¤Æ¤ß¤Þ¤·¤¿¡Ä

¤¬¡Ä(STM32F746G-Discovery¤Ç»î¤·¤¿)


¤¦¤¦¤à¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î¤¸¤ã¤É¤¦¤¤¤¦¾õ¶·¤Ç¤â¥Ç¡¼¥¿²½¤±¤·¤Æ¤Ì¤§¡Ä
¢¨9·îÅÙÈǤλþÅÀ¤Ç¥é¥¤¥È¥Ð¥Ã¥¯ÈǤËÊѹ¹ºÑ¤ß¤Ç¤¹¡£


¥­¥ã¥Ã¥·¥å¤ò¸ú¤«¤»¤¿RAMÎΰè¤Ë¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤ò³ÎÊݤ·¤ÆLTDC¤òưºî¤µ¤»¤Æ¤¤¤ë
»þÅÀ¤ÇDMA¤·¤Æ¤ë»þ¤ÈƱ¤¸¤è¤¦¤Ë¤Ê¤êDMA2D¤»¤º¤È¤â¥­¥ã¥Ã¥·¥å¤ÈLTDC¥³¥ó¥È¥í¡¼¥é
¤È¤Î´³¾Ä¤¬È¯À¸¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¥é¥¤¥È¥¢¥í¥±¡¼¥È¤¢¤ë¤Ê¤·¤Ë´Ø·¸¤Ï
¤Ê¤¤¤Î¤Ç¥é¥¤¥È¥Ð¥Ã¥¯¤Ç¤Ï¥Ç¡¼¥¿Å¾Á÷Á°¤Ëɬ¤º¥­¥ã¥Ã¥·¥å¤ÎClean¤¬É¬ÍפǤ¹¡£

¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î¤Ç¤³¤ì¤Ë°ú¤Ã¤«¤«¤Ã¤¿Î㤬ChaN¤µ¤ó¤Îjpeg¥é¥¤¥Ö¥é¥ê¤ò»È¤¤
jpeg¥Õ¥¡¥¤¥ë¤òɽ¼¨¤µ¤»¤è¤¦¤È¤·¤¿»þ¤Ç¡¢disp_blt´Ø¿ôÆâ¤ÇžÁ÷ľÁ°¤Ë¥¯¥ê¡¼¥ó¤ò
¹Ô¤¦¤³¤È¤Ë¤è¤êÂкö¤·¤Æ¤ª¤ê¤Þ¤¹¡£

¤½¤·¤ÆÁ°²ó¤â´Êñ¤ËÀâÌÀ¤·¤Þ¤·¤¿¤¬¥­¥ã¥Ã¥·¥å¥³¥ó¥È¥í¡¼¥ë¤ò¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º
¥é¥¤¥È¥¢¥í¥±¡¼¥È»þ¤Ëɽ¼¨¤¬Êø¤ì¤Æ¤·¤Þ¤¦¸¶°ø¤Ï½ñ¤­¹þ¤ß¥­¥ã¥Ã¥·¥å¥ß¥¹»þ¤Ë¼Â¥á¥â¥ê
¤«¤é¥Ç¡¼¥¿¤òÆÉ¤ß½Ð¤·¥­¥ã¥Ã¥·¥å¥é¥¤¥ó¤ËŸ³«¤·¤Æ¤¤¤ëưºî¤½¤Î¤â¤Î¤Ë¤¢¤ê¤Þ¤¹¡£
¼Â¥á¥â¥ê(SDRAM)¤«¤é¤Îreadưºî¤Ë¤è¤Ã¤Æ¥­¥ã¥Ã¥·¥å¥é¥¤¥ó¤¬µÕ±øÀ÷¤µ¤ì¡¢·ë²Ì¤È¤·¤Æ
´óÀ¸Eviction¤¬µ¯¤³¤ê¤Þ¤¯¤êɽ¼¨¤¬Êø¤ì¤Æ¤·¤Þ¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Ç¡¼¥¿¥­¥ã¥Ã¥·¥å¥µ¥¤¥º¾å¸Â°Ê²¼¤ÎÍÆÎ̤ǥÁ¥Þ¥Á¥Þ½ñ¤­´¹¤¨¤ë¡Ä¤¿¤È¤¨¤ÐFONTX2¤Î
ɽ¼¨¤È¤«¤Î»þ¤Ë°ìÈÖÊø¤ì¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

¢¬¤³¤ó¤Ê´¶¤¸¤ËÊø¤ì¤Þ¤¹¡£
¤³¤ì¤ÏLTDC¤Ë¸Â¤é¤ºSAI¤È¤«¤Î´ðËܽñ¤­¹þ¤ß¤Ã¤Ñ¤Ê¤·¤Î¤Ö¤ÃÊü¤·¤Î¥Ú¥ê¥Õ¥§¥é¥ë¤Ç¤â
µ¯¤³¤ê¤Þ¤¹¤¬Ä¹¤¯¤Ê¤ê¤½¤¦¤Ê¤Î¤Ç¼¡²ó¤Ë¤Ç¤â²òÀ⤷¤Þ¤¹¡£

¤¤¤í¤¤¤í»î¤¹28

¤ª¤¤¤ª¤¤¤Ä¤¤¤ËGWÍ褿¤È»×¤Ã¤¿¤é¤â¤¦°ì¥ö·î·Ð¤Ã¤Á¤Þ¤¤¤Þ¤·¤¿¤è¤É¤¦¤¤¤¦¤³¤È¤ÀYO!

¡üSTM32L0¥·¥ê¡¼¥º¤ò»È¤¦

¿ôǯÁ°¤ËÇã¤Ã¤¿¤Î¤Ç¤¹¤±¤ÉÃȤ᤹¤®¤ÆÉå¤Ã¤Á¤ã¤¤¤Þ¤·¤¿¤Æ¤Ø♥


STM32L0¥·¥ê¡¼¥º¤ÏCortex-M0+¤ò¥³¥¢¤Ë»ý¤ÄÄã¾ÃÈñÅÅÎÏÆÃ²½·¿¤Î
ARM¥Þ¥¤¥³¥ó¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£
¤³¤Îɾ²Á¥Ü¡¼¥ÉSTM32L0538-Discovery¤âÄã¾ÃÈñÅÅÎÏ¤ËÆÃ²½¤·¤¿ºî¤ê¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¼çÌò¤ÎSTM32L0¤Ï´ðÈÄ΢Ì̤ˤ¢¤ê¤Þ¤¹¡£


Ì̤ܶϤ³¤ÎÅŻҥڡ¼¥Ñ¡¼¤Ç¤¹¡£ÅŸ»¤òÀڤäƤâɽ¼¨ÆâÍÆ¤¬Êݸ¤µ¤ì¤ë¤È¤¤¤¦Í¥¤ì¤â¤Î
¤Ç¤¹¤¬Ä̾ï¤Î¥É¥Ã¥È¥Þ¥È¥ê¥¯¥¹±Õ¾½¤Î¤è¤¦¤Ë´Êñ¤Ë¤Ï°·¤¨¤º¤«¤Ä²èÌ̽ñ¤­´¹¤¨¤âŤ¤
»þ´Ö³Ý¤«¤ë¤Î¤Ç¤â¤Ã¤Ñ¤éÀŻ߲èɽ¼¨¤Ëα¤á¤Æ¤ª¤¯¤Î¤¬¤Þ¤È¤â¤Ê»È¤¤Êý¤È¤¤¤¨¤Þ¤¹¡£
L0¥·¥ê¡¼¥º½é´ü¤ÎSTM32L053C8¤¬»ÈÍѤµ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£


¤³¤ÎÅŻҥڡ¼¥Ñ¡¼¤Î¥É¥é¥¤¥Ð¤Ë¤ÏSTM32L152¤¬»ÈÍѤµ¤ì¤Æ¤¿¤ê¤·¤Þ¤¹¡£


¤³¤Á¤é¤¬É½¼¨¤·¤Æ£²¥ö·î·Ð²á¤·¤¿¸å¤Î²èÌ̤Ǥ¹¡£ÅŸ»¤òÍî¤È¤·¤Æ¤âɽ¼¨ÆâÍÆ¤¬Êݤ¿
¤ì¤ë¤Î¤Ç¤¹¤¬»þ´Ö¤Î·Ð²á¤È¶¦¤Ë¤ä¤Ï¤êÇö¤ì¤Æ¤¤¤­¤Þ¤¹¡£¤ª¤â¤Ê¥¿¡¼¥²¥Ã¥È¤È¤µ¤ì¤Æ
¤¤¤ëŹÊޤβÁ³Êɽ¼¨ÈĤǤλÈÍѤò¹Í¤¨¤¿¤é½½Ê¬¤¹¤®¤ëÊÝ»ý»þ´Ö¤È¤â¤¤¤¨¤Þ¤¹¡£
¤Ç¤âÇò¹õ¤Ê¤Î¤Ï¥¦¥±¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©¡©¡©¡©¤¢¤È¤Ï¥Æ¥­¥¹¥È¥ê¡¼¥À¡¼ÍÑÅӤȤ«¡©¡©

¥Õ¥ê¡¼¤Î³«È¯´Ä¶­¤«¤é»È¤¦¾ì¹ç¤Ï¤ª¤Ê¤¸¤ßOpenOCD¤ÇÆâ¢¥Õ¥é¥Ã¥·¥å¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£
¢¨L0¥·¥ê¡¼¥º¤Ï¤«¤Ê¤ê¥¯¥í¥Ã¥¯Íî¤È¤µ¤Ê¤¤¤È¥³¥±¤Þ¤¯¤ê¤Þ¤¹¡£µ¤¤òÉÕ¤±¤Æ¤¯¤À¤µ¤¤¡£

> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/stm32l0discovery_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.10.0+dev-00143-gf6449a7-dirty (2017-05-20-14:25)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
adapter speed: 300 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : clock speed 240 kHz
Info : STLINK v2 JTAG v28 API v2 SWIM v18 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.240553
Info : stm32l0.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
adapter speed: 240 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x08002148 msp: 0x20002000
STM32L0: Enabling HSI16
Info : Unable to match requested speed 2500 kHz, using 1800 kHz
Info : Unable to match requested speed 2500 kHz, using 1800 kHz
adapter speed: 1800 kHz
adapter speed: 1200 kHz
auto erase enabled
Info : Device: STM32L0xx (Cat. 3)
Info : STM32L flash size is 64kb, base address is 0x8000000
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000000e msp: 0x20002000
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000000e msp: 0x20002000
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000000e msp: 0x20002000
wrote 16384 bytes from file main.elf in 3.218750s (4.971 KiB/s)
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002000
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002000
verified 16096 bytes in 0.140625s (111.778 KiB/s)
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
adapter speed: 240 kHz
adapter speed: 1200 kHz
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:04

½ñ¤­¹þ¤ß»þ¤Î¥í¥°¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£
¤Í¤à¤¤¤µ¤ó¶àÀ½STM32L0¥Ç¥Ð¥¤¥¹¸þ¤±¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ßÍÑcfg¤Ï
¤Í¤à¤¤¤µ¤ó¤ÎOpenOCD¥Ð¥¤¥Ê¥ê¤Ë¤â¤Á¤í¤ó¼ýÏ¿ºÑ¤ß¤Ç¤¹¡ª

L0¥·¥ê¡¼¥º¤Î¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ß¤Ï¿ôǯÁ°¤«¤éOpenOCD¤ËÂбþ¤·¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬
1Word¤´¤È¤ÎŽÁŽÏŽÁŽÏ½ñ¤­¤·¤«Âбþ¤·¤Æ¤ª¤é¤º¤Í¤à¤¤¤µ¤ó¤âŽ¢»È¤¨¤Í¤§¡ªŽ£¤ÈȽÃǤ·¤Æ
Èî¤ä¤·¤Ë¤·¤Æ¤ª¤ê¤Þ¤·¤¿¤¬º£Ç¯¤Ë¤Ê¤Ã¤Æ¤è¤¦¤ä¤¯¥Þ¥¤¥³¥ó¦¥í¡¼¥À¡¼¤Î¥½¡¼¥¹¤¬
¸«Ä¾¤µ¤ì
¡¢¤Þ¤È¤â¤Ë»ÈÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¤Á¤Ê¤ß²¿¸Î¤½¤¦¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤«¤È¤¤¤¦¤ÈCortex-M3¥·¥ê¡¼¥º¤ÎSTM32L1
¥·¥ê¡¼¥º¤È¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ßÍÑ¥³¡¼¥É¤ÈƱ¤¸°·¤¤¤Ë¤·¤Æ¤·¤Þ¤Ã¤¿¤»¤¤¤Ç
M0+¤Ç»ÈÍÑÉÔ²Äǽ¤ÊM3¤ÎÌ¿Î᤬¥í¡¼¥À¤Î¥Ð¥¤¥È¥³¡¼¥É¤È¤·¤Æ»ÈÍѤµ¤ì¤Æ
¤·¤Þ¤Ã¤Æ¤¤¤¿¤«¤é¤Ê¤Î¤Ç¤·¤¿¡£

¤Í¤à¤¤¤µ¤óÅö»þ¤ÏNuvoton¤äKinetis¤Î¥µ¥Ý¡¼¥È¤ËÌöµ¯¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤Î¤Ç
STM32¤Ë´Ø¤·¤Æ¤Ï´Êñ¤Ê¥³¡¼¥É¤ÎÄɲÃÄøÅÙ¤·¤«¥³¥ß¥Ã¥È¤Ç¤­¤Ê¤«¤Ã¤¿¤Î¤Ç¤¹¤¬
ºÙ¤«¤¤»ö¹Í¤¨¤¿¤éÀè¤Ë¤¹¤¹¤á¤Þ¤»¤ó¤Î¤Ç¤È¤ê¤¢¤¨¤º¤É¤ó¤É¤ó³èÍѤ·¤Æ¤¤¤³¤¦¤È
»×¤¤¤Þ¤¹¡£¤¤¤º¤ì¤ÏNuvoton¤â¥í¡¼¥À¤Î¥³¡¼¥É¸«Ä¾¤·¤¿¤¤¤Ç¤¹¤Í¡Á¡£

¤È¤¤¤¦¤ï¤±¤Ç¤ª¤­¤Ñ¤Î¥é¥¤¥ó¥Ê¥Ã¥×¤ËÄɲä·¤Þ¤·¤¿¤Î¤Ç¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡ª
¤ª¤Ê¤¸¤ß¤ÎUART¤Ë¥ê¥¿¡¼¥²¥Ã¥È¤·¤¿printf¤Î¼Â¹Ô¤È¥á¥â¥ê±Õ¾½¤ËFONTX2¥É¥é¥¤¥Ð¤ò
ÍѤ¤¤ÆÊ¸»úɽ¼¨¤¹¤ëÆâÍÆ¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡£
¤â¤Á¤í¤óHAL¥é¥¤¥Ö¥é¥êÂбþ¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡ù


¡ü²áµî¤Îµ­»ö¤ÎÀµÅöÀ­¤Ë¤Ä¤¤¤Æ¹Í
3·î²¼½Ü¤«¤é³¤¤¤Æ¤ª¤ê¤Þ¤¹¤¬¤Ö¤í¤°¾å¤ÇDropBox¤Î²èÁü¤¬É½¼¨¤µ¤ì¤Ê¤¯¤Ê¤Ã¤¿ÌäÂê¤ò
¤Ý¤Á¤Ý¤Á¤ÈÃÏÆ»¤Ë½¤Àµ¤·¤Æ¤ª¤ê¤Þ¤¹¡£
201705Ëö¸½ºß¤Ï¥¢¥¯¥»¥¹¿ô¤¬Â¿¤«¤Ã¤¿ESP32¡¦ESP8266¡¦¥À¥¤¥È¥ì¡¦Ï»¹Ã¡¦
STM32F4¤Î¤Îµ­»ö¤Ï¤¹¤Ù¤Æ½¤Àµ¤¬´°Î»¤·¡¢STM32F7¤Î½¤Àµ¤â¤Û¤Ü½ª¤¨¤¿¤È¤³¤í¤Ç¤¹¡£
»Ä¤ê¤Ï2016ǯÅÙ°ÊÁ°¤Î¾®¥Í¥¿´ØÏ¢¤Îµ­»öÁ´Éô¤ÈÅ쳤¼«Á³ÊâÆ»¤Îµ­»ö¤È¤Ê¤ê¤Þ¤·¤¿¡£

¤½¤ì¤Ëȼ¤Ã¤Æ¼«Ê¬¤¬½ñ¤¤¤¿²áµî¤Îµ­»ö¤ÎÆâÍÆ¤Î¸«Ä¾¤·¤âŬµ¹¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
ÆÃ¤Ë¥ê¥ó¥¯Àڤ줬ÌÜΩ¤Á¤Þ¤¹¤¬¼£¤»¤ë¤â¤Î¤Ï²¿¤È¤«¼£¤·¤Æ¤¤¤Þ¤¹¡£¤µ¤¹¤¬¤Ë
3ǯ°Ê¾åÁ°¤Îµ­»ö¤Ë¤Ê¤ë¤È¤É¤¦¤·¤Æ¤âº£¤Ç¤Ï¸í¤Ã¤¿³µÇ°¤Ç¤¢¤ë¤ÈȽÌÀ¤·¤¿¤ê
¤½¤Î»þ¤ÏÄ̤¸¤¿¼êË¡¤¬¸½ºß¤Ç¤ÏÄ̤¸¤Ê¤«¤Ã¤¿¤ê¤È¤¤¤Ã¤¿¤³¤È¤¬Âô»³½Ð¤Æ¤­¤Þ¤¹¡£
¤Ç¤¹¤¬Âбþ¤Ë¤â¤ä¤Ï¤ê¸Â³¦¤Ï¤¢¤ê¤Þ¤¹¡£
¤³¤Á¤é¤ÎÊý¤Ï»ä¤Î5ǯÁ°¤Î¤Ö¤í¤°µ­»ö¤ò»²¾È¤·¤ÆÃΤꤿ¤¤¾ðÊ󤬾ÃÌǤ·Åþã¤Ç¤­¤Ê¤«¤Ã¤¿
¤³¤È¤Ë¸ÀµÚ¤µ¤ì¤Æ¤ª¤é¤ì¤Þ¤¹¤¬2012ǯ¤Î¤Í¤à¤¤¤µ¤ó¤Ï´û¤ËŽ¢CMSISv3°Ê¹ß¤ò»È¤¨Ž£¤È
¥¢¥É¥Ð¥¤¥¹¤·¤Æ¤¤¤ë¤Î¤Ç¤½¤ì¤Ë½¾¤ï¤º¼«¸Êή¤Ç¤µ¤ì¤Æ¾¡¼ê¤Ëº¤¤é¤ì¤Æ»ä¤Î¤»¤¤¤Ë¤µ¤ì
¤Æ¤â¤½¤ì¤Ï¤Á¤ç¤Ã¤È¤Á¤¬¤¤¤Þ¤¹¤è¤È¡¢ÆÃ¤ËÌÈÀÕ»ö¹à¤Ï¤Ö¤í¤°¤Î¥×¥í¥Õ¤Ë¤âÌÀµ­¤·¤Æ
¤¢¤ê¤Þ¤¹¤Î¤Ç»ä¤Ë²¿Ç¯¤âÁ°¤ÎÆâÍÆ¤òÊä½þ¤¹¤ëµÁ̳¤Ï¤Ê¤¤¤Ç¤¹¡£¤È¡£
¤³¤ì¤À¤±¤Ï¤Ï¤Ã¤­¤ê¤È¿¿¼Â¤òÅÁ¤¨¤¿¤«¤Ã¤¿¡£

¤È¤Ï¤¤¤¨¤³¤Î¤Þ¤ÞÊüÃÖ¤¹¤ë¤Î¤Ï»ä¤È¤·¤Æ¤â¿´¶ì¤·¤¤¤Î¤Ç2017ǯ¤ÎÆâÍÆ¤Ë¨¤·¤¿¤â¤Î¤Ë
¾ðÊó¤ò½¤Àµ¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿¡£

°ìÊý¤³¤Á¤é¤ÎÊý¤¬»ØÅ¦¤µ¤ì¤¿EN¤ÈBOOT´Ö°ã¤¨¤Æ¤¿·ï¤ÏESP-WROOM-32¤«¤é
Êü¼Í¤µ¤ì¤¿Åż§ÇȤαƶÁ¤«¤é¤«»ä¤ÎƬ¤¬¤Ü¤±¤Æ¤Æ´°Á´¤Ë»ä¤Î¥ß¥¹¤Ç¤¹¡£

¤Ê¤ó¤Ë¤»¤è¤É¤Ã¤«¤ÎÔä¤Ë¤Þ¤¿Ž¢¤³¤¤¤Ä¤¬½ñ¤¤¤Æ¤ë¤³¤È¤Ï¥Ç¥¿¥é¥áŽ£¤È¤«½ñ¤«¤ì¤Ê¤¤¤è¤¦
À¤´Ö¤Ë¸ø³«¤¹¤ëÁ°¤Ë°ì©¤ª¤¤¤ÆÀºÆÉ¤·¤Æ´Ö°ã¤¤¤ò½¤Àµ¤¹¤ëÊʤò½¬´·¤Å¤±¤Æ¤³¤ì¤«¤é¤Ï
¤Ê¤ª°ìÁؤΤ³¤Èµ¤¤òÉÕ¤±¤Æ¹Ô¤³¤¦¤È»×¤¤¤Þ¤·¡¢¤¿¡ª


¡üFatFs¤¬0.13¤Ë¹¹¿·
ChaN»á¤ÎFatFs¤â5·îÃæ½Ü¤Ë¹¹¿·¤·¤Æ¤ª¤ê¤Þ¤·¤¿¡ª
¼ç¤Ê¹¹¿·ÆâÍÆ¤Ï"syscalls.c"¤äoption¥Õ¥©¥ë¥ÀÆâ¤Î¥³¡¼¥É¥Ú¡¼¥¸ÊÑ´¹¥Æ¡¼¥Ö¥ë
¤¬Çѻߤµ¤ì¤Æffsystem.c¤Èffunicode.c¤ËÊѹ¹¤µ¤ì¤¿¤³¤È¡¢¤¢¤È´ö¤Ä¤«¤ÎÄêµÁ¤â
ÀÜÆ¬¸ì¤Ë"FF_"¤¬ÉÕÍ¿¤µ¤ì¤ÆÂ¾¤Î¥½¡¼¥¹¥³¡¼¥É¤È¤ÎÄêµÁ¤Î¥Ð¥Ã¥Æ¥£¥ó¥°¤¬Ä㸺¤µ¤ì
¤Æ¤¿¤³¤È¤Ç¤¹¡£

exFAT´Ø¤¹¤ë¥ë¡¼¥Á¥ó¤Ï½éÅоì°Ê¹ßÆü¿Ê·îÊâ¤Ç¿Ê²½¤·¤Þ¤¯¤Ã¤Æ¤¤¤ë¤Î¤Ç³§¤µ¤ó¼«¿È
¤Çforum¤ä¹¹¿·¾ðÊó¤ò¾ï¤Ë³Îǧ¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

¤Í¤à¤¤¤µ¤óŪ¤Ë¤Ïdefine¤ÎÀÜÆ¬¸ì¤Ë"FF_"¤¬ÉÕÍ¿¤µ¤ì¤¿¤Î¤¬¸ú¤­¤Þ¤·¤¿¡£¼«Ê¬¤Ç½ñ
¤¤¤¿Éôʬ¤Ë¤â¿¿ô¤ÎFatFs¤Îdefine¤ÇÀڤäƤ¢¤Ã¤¿¤Î¤Ç¸«Æ¨¤µ¤Ê¤¤¤è¤¦¤Ë½¤Àµ¤·¤Æ
²ö¤Ã¤¿¤Î¤ÇÂçÊѤǤ¹¡£¤Ç¤¹¤¬²¿¤È¤«Á´Éô¼£¤¹¤³¤È¤¬½ÐÍè¤Æ¤ª¤­¤Ñ¤ËÃÖ¤¤¤Æ¤ë
¥µ¥Ý¡¼¥ÈÃæ¤Î4¼ï¤ÎFatFs°Ü¿¢Îã¤â̵»ö0.13Âбþ¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¡ù

¡¦STM32F7(HAL¥É¥é¥¤¥Ð»ÈÍÑ)
¡¦STM32F4(SPL»ÈÍÑ)
¡¦STM32F1(SPL»ÈÍÑ)
¡¦LPC4088

¤ª¤Ã¤È¡¢ºÇ¤â½ÅÍפʻöÊÁ¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤¿¤Î¤ò˺¤ì¤Æ¤ª¤ê¤Þ¤·¤¿¡£
º£²ó¤Î¹¹¿·¤«¤éChaN¤µ¤ó¤ÎFatFs¤Ë´Ø¤¹¤ë¥Ú¡¼¥¸¤ÏÁ´¤Æ±Ñ¸ì¤Î¤ß¤Ë¤Ê¤êÆüËܸì¤Ë
Ìõ¤µ¤ì¤¿²òÀ⤬´°Á´¤Ë¾ÃÌǤ·¤Þ¤·¤¿¡£

ºòº£¤Îembedded»ö¾ð¤ò´Õ¤ß¤ë¤ÈÍ­±×¤Ê¾ðÊó¤ÏËޤƱѸì·÷¤Î¥³¥ß¥å¥Ë¥Æ¥£¤Ë
½¸Ìó¤µ¤ì¤Æ¹Ô¤¯¤Î¤¬É¬Á³¤Ç¤¢¤ê¤³¤Îή¤ì¤ÏÈò¤±¤é¤ì¤Ê¤¤»öÊÁ¤Ç¤¹¤¬¤Í¤à¤¤¤µ¤ó¤Î
ÃÎǽ¥ì¥Ù¥ë¤Ç¤¹¤é±Ñ¸ì¤Ç°Õ»Ö¤ÎÁÂÄ̤¬ÌäÂê¤Ê¤¯¤Ç¤­¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç³§¤µ¤ó¤Ë
¤È¤Ã¤Æ¤âÌäÂê¤Ê¤¤¤Ï¤º¤Ç¤¹¡Ä¤è¤Í!?(°Ò°µ)

¡üSD¥«¡¼¥É¤Îµ¬³Ê¤¬V6.00¤Ë¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×
ºòǯ½©¤ËSDv5¤Ë¹¹¿·¤ÈÊ󤸤ޤ·¤¿¤¬Áᤤ¤â¤Î¤ÇA1¥¯¥é¥¹¤ÎÄêµÁ¤¬Äɲ䵤줿V6.00¤Ø¤È
Á᡹¤Ëµ¬³Ê¤¬¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤·¤Æ¤ª¤ê¤Þ¤¹
¡£¤â¤¦¹«¤Ç¤Ï¤½¤ÎA1¥¯¥é¥¹¤Î¥í¥´¤¬¾è¤Ã¤¿
SD¥«¡¼¥É¤¬½Ð²ó¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£

A1¥¯¥é¥¹¤ÎÍøÅÀ¤Ï¾®¤µ¤¤¥µ¥¤¥º¤Î¤Á¤Þ¤Á¤ÞÆÉ¤ß½ñ¤­¤Î¥¹¥Ô¡¼¥É¤¬°ìÄêÃͰʾåÊݾڤµ¤ì¤Æ
¤¤¤ë¤È¤¤¤¦ÅÀ¤Ç¤¹¤¬¿ï½ê¤Ç¾å¤¬¤Ã¤Æ¤¤¤ë¥Ù¥ó¥Á¥Þ¡¼¥¯¤ò¸«¤ë¸Â¤ê¤Ç¤ÏA1ºöÄê°ÊÁ°¤«¤é
¸ºß¤¹¤ë¹â²Á³ÊÂӤιâÀ­Ç½¥«¡¼¥É¤ÈÈæ¤Ù¤ë¤ÈÂ礭¤ÊÍ­°Õº¹¤Ï¤Ê¤µ¤½¤¦¤Ç¤¹¡£

¤Í¤à¤¤¤µ¤ó¤Ï¼¡Ç㤦¥«¡¼¥É¤ÏS.M.A.R.T.¤¬ºÎ¤ì¤ëDelkin¤ÎMLC¤Î¤ä¤Ä¤Ë·è¤á¤Æ¤Þ¤¹¤Î¤Ç
¤·¤«¤âº£¤Ï¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¤â3D-NAND¤Ø¤Î²áÅÏ´ü¤ÇSD¥«¡¼¥É¤½¤Î¤â¤Î¤ÎÃÍÃʤ¬¤É¤ó
¤É¤ó¹â¤¯¤Ê¤Ã¤Æ¤¤¤ë¤Î¤ÇA1¥í¥´ÉÕ¤­¤Î¥«¡¼¥É¸«¤«¤±¤Æ¤â¼ê¤ò½Ð¤µ¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£
¤Æ¤¤¤¦¤«Ì±À¸ÍÑSD¥«¡¼¥É¤ÎÃÍÃʤ¬¹â¤¯¤Ê¤êÁêÂÐŪ¤ËDelkin¤Î¤ä¤Ä¤¬¤ªµá¤á¤ä¤¹¤¤
ÃÍÃʤˤʤäÁ¤Þ¤¤¤Þ¤·¤¿¤Î¤Ç±¿¤è¤¯ÆÃÊ̼ýÆþ¤¬È¯À¸¤·¤¿¤é¨Ç㤤¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡ª¡ª
¤¤¤­¤Ê¤ê10²¯±ß(Àǰú¤­¸å)¤È¤«¼ê¤ËÆþ¤é¤Ê¤¤¤«¤·¤é¡Ä

STM32F7¤ò»È¤Ã¤Æ¤ß¤ë7 -½©·î¤µ¤ó¤è¤êF7DiscoveryÈÎÇ䵭ǰ-

¢¨¤È¤¢¤ëÂçÀÚ¤ÊÊý¤Îë¾Êó¤ò¼õ¤±¤ÆÎî¾ì¤á¤°¤ê¤ò¤·¤Æ¤¤¤¿¤¿¤á¹¹¿·¤¬°ì½µ´Ö°Ê¾åÃÙ¤ì¤Æ
¡¡¤Þ¤¹¡£¤¹¤ß¤Þ¤»¤ó¡£


À衹½µËö¡¢½©·î¤µ¤ó¤è¤êSTM32F7-Discovery¤¬ÈÎÇ䤵¤ì¤Þ¤·¤¿¡£
Æþ¼ê¤·¤ä¤¹¤¯¤Ê¤Ã¤¿»ö¤Ë¤è¤Ã¤Æ³§¤µ¤ó¤âF7¤Ë¿¨¤ì¤ë¥Á¥ã¥ó¥¹¤¬¤Ç¤­¤¿¤È»×¤¤¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤âF7¥Í¥¿¤Ç°ì¤Äµ­»ö¤ò½ñ¤­¤¿¤«¤Ã¤¿¤Î¤Ç¤¹¤¬¤¤¤Þ¤¤¤Á"¤Ñ¤ó¤Á"¤¬¼å¤¯
¹¹¿·¤Ëí´í°¤·¤Æ¤¤¤¿¤Î¤Çº£²ó¤ÎÈÎÇ䳫»Ï¤ÏÅϤê¤Ë½®¤Ç¤·¤¿¡£¤·¤«¤â¤â¤¦°ì¤Ä´ò¤·¤¤
¥Ë¥å¡¼¥¹¤âƱ»þ¤Ë¤Ç¤Æ¤­¤Þ¤·¤¿¡£


¡üOpenOCD¤¬STM32F7¤ÎÆâ¢¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ß¤ËÀµ¼°Âбþ
7·î¾å½Ü¡¢»ä¤¬ºÇ½é¤Ë¤¤¤¸¤ê¤À¤·¤¿¤³¤í¤«¤éF2/F4·Ï¤ÈÊÌ·ÏÅý¤ÎSTM32F7¤Î¥Æ¥¹¥ÈÍÑ
¥É¥é¥¤¥Ð¤Ï¸ºß¤·¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬½©·î¤µ¤ó¤ÎÈÎÇä¤È»þ¤òƱ¤¸¤¯¤·¤ÆOpenOCD¤ËF7·Ï¤Î
¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ß¥µ¥Ý¡¼¥È¤¬F2/F4¥É¥é¥¤¥Ð¤ËÀµ¼°¤Ë¤è¤¦¤ä¤¯Äɲ䵤ì¤Þ¤·¤¿
¡£

Corex-M7¤ÏL1¥­¥ã¥Ã¥·¥å¤ò»ý¤Ä¤Î¤Ç¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ß¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¤È¤­
¤Ë¥á¥â¥ê¥Ð¥ê¥¢Ì¿Îá¤òÄ¥¤Ã¤Æ°Õ¿Þ¤·¤¿¼ê½ç¤Ç½ñ¤­¹þ¤ß¤Î¤¿¤á¤ÎÌ¿Îá¤ò¼Â¹Ô¤µ¤»¤ë
¤è¤¦¤Ë¤·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¤Ç¤·¤¿¡£
ºÇ½é¤Ë¥³¥ß¥Ã¥È¤µ¤ì¤¿»þ¤Ï¤½¤ó¤ÊÍýͳ¤ÇF7ÀìÍѤΥեé¥Ã¥·¥å¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¤¬
Ʊ¤¸MPU¤ò»ý¤ÄF2/F4·Ï¤Ç¤âÌäÂ̵꤬¤«¤Ã¤¿¤¿¤á·ë¶Éstm32f2x.c¤ËÅý¹ç¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/stm32f7discovery_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.10.0-dev-00104-gf3be0f6-dirty (2015-11-13-09:52)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Info : STLINK v2 JTAG v24 API v2 SWIM v11 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.219974
Info : stm32f7x.cpu: hardware has 8 breakpoints, 4 watchpoints
stm32f7x.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0803276c msp: 0x20010000
auto erase enabled
Info : device id = 0x10016449
Info : flash size = 1024kbytes
stm32f7x.cpu: target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000046 msp: 0x20010000
wrote 786432 bytes from file main.elf in 18.501879s (41.509 KiB/s)
stm32f7x.cpu: target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20010000
stm32f7x.cpu: target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20010000
stm32f7x.cpu: target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20010000
verified 600552 bytes in 2.451303s (239.251 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:21

½ñ¤­¹þ¤ß¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£°ÊÁ°¤ÈÁ´¤¯ÊѤï¤Ã¤Æ¤Þ¤»¤ó¤Í¡Á¡£
»ä¤¬Ä󶡤·¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¤Ï¤â¤Á¤í¤óSTM32F7-Discovery¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡ú
¤Þ¤¿¡¢°ÊÁ°¤âÅÁ¤¨¤Þ¤·¤¿¤¬STLink/V2-1¤Î¥Õ¥¡¡¼¥à¤Ï2.24.11°Ê¹ß¤Ë¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ
¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£¸Å¤¤ÈÖ¤À¤Èmbed¤ÎMSC¤ÎÊý¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È´³¾Ä¤·¤Æ½ñ¤­
¹þ¤ß¤¬É¬¤º¼ºÇÔ¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£½©·î¤µ¤ó¤Ç¹ØÆþ¤Ç¤­¤ëÅۤϤµ¤¹¤¬¤ËºÇ¿·ÈǤË
¤Ê¤Ã¤Æ¤ë¤Ï¤º¤Ç¤¹¤Î¤Ç¤¿¤Ö¤óÌäÂê¤Ê¤¤¤Ç¤·¤ç¤¦¤±¤É¡£


¡üMPU¤ÈSDRAM¤Î¥­¥ã¥Ã¥·¥åÀßÄê
²áµî¤Ë¤â¾¯¤·¿¨¤ì¤¿MPU¤Î»ö¤Ç¤¹¤¬¡¢F2/F4·Ï¤Ç¤Ï¤Û¤È¤ó¤É½ÐÈÖ¤¬¤Ê¤«¤Ã¤¿Âåʪ¤Ç¤¹¤¬
L1¥­¥ã¥Ã¥·¥å¤¬¼ÂÁõ¤µ¤ì¤¿F7·Ï¤Ç¤Ï¶Ë¤á¤Æ½ÅÍפʰÕÌ£¤ò»ý¤Á¤Þ¤¹¡£¤·¤Ã¤«¤ê¹Í¤¨¤ÆÀßÄê
¤·¤Ê¤¤¤È¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ËÂ礭¤Ê±Æ¶Á¤¬½Ð¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

½ñ¤¯¤¤¤¦»ä¤â¥­¥ã¥Ã¥·¥å¤Î³µÇ°¤ò¤è¤¯Íý²ò¤·¤Æ¤Ê¤¯¤ÆDMA¤Ç̵Â̤˶ìÀ路¤¿¤ê
¤·¤Æ¤Þ¤·¤¿¤¬¿·¤¿¤ËFMC¤ò»È¤Ã¤¿SDRAM¤Ç¼êÍî¤Á¤ò¸«¤Ä¤±¤Æ¤·¤Þ¤¤¤Þ¤·¤¿orz


¢¬AN4667¤è¤ê°úÍÑ
Ä̾ï¤ÏFMC¤ÏD-Cache¤òÄ̤¸¤Æ¥¢¥¯¥»¥¹Â®Å٤θþ¾å¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¤½¤ì¤¬
Í­¸ú¤Ê¥¢¥É¥ì¥¹Îΰè¤ÏCortex-M7¤Î¥³¥¢¾å¤ÇÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡£
SDARAM¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¥¢¥É¥ì¥¹(0xC0000000~)¤Ç¤Ï¤´Í÷¤Î¤È¤ª¤ê¥­¥ã¥Ã¥·¥å
¥á¥â¥ê¤Î²¸·Ã¤Ë¤¢¤ä¤«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£


¢¬AN4667¤è¤ê°úÍÑ
FMC¤ÎSDRAM¤Î¥¢¥É¥ì¥¹¤ò¥ê¥Þ¥Ã¥×¤·¤Æ¥­¥ã¥Ã¥·¥å¤¬¸ú¤¯¥¢¥É¥ì¥¹Îΰè¤ËÊѤ¨¤ë
ÊýË¡¤â¤¢¤ê¤Þ¤¹¤¬MPU¤Ç¥­¥ã¥Ã¥·¥å²Ä¤ÎÎΰè¤ËÀßÄꤷ¤Æ¤·¤Þ¤¦Êý¤¬´Êñ¤Ç¤¹¡£


MPU¤ÎÀßÄê¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£¥­¥ã¥Ã¥·¥åÍ­¸ú¤Î»þ¤Ë"MPU_ACCESS_NOT_BUFFERABLE"
¤È¤¹¤ë¤È¥é¥¤¥È¥¹¥ë¡¼¤È¤Ê¤ê¤Þ¤¹¡£
¥é¥¤¥È¥Ð¥Ã¥¯¤Ï"MPU_ACCESS_BUFFERABLE"¤Ç¤¹¡£

¤Ê¤ª¡¢FMC¤äSDRAM¤òÍ­¸ú¤Ë¤·¤Æ¤Ê¤¯¤Æ¤âMPU¤Ï¤½¤ì¤é¤È´°Á´¤ËʬΥ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢
ÀßÄꤷ¤¿½Ö´Ö¤Ë¤¤¤­¤Ê¤êHardFault¤È¤«¤Ë¤Ê¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤Þ¤¿¡¢QSPI¤ÎÎΰè¤Ë¤Ä¤¤¤Æ¤ÏÁ°ÅӤΤȤª¤ê¸µ¤«¤é¥­¥ã¥Ã¥·¥å²Ä¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç
ÆÃ¤ËMPU¤òÀßÄꤹ¤ëɬÍפϤʤ¤¤Ç¤¹¡£


¤Æ¤ï¤±¤ÇÁᮤ¤¤Ä¤â¤Îjpeg¥Õ¥¡¥¤¥ë¤Î¥Ç¥³¡¼¥É»þ´Ö¤ÇÈæ³Ó¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤½¤Î£±¡¥¥Õ¥é¥Ã¥·¥å¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÏAXIM

¢¬MPU¤Ï²¿¤âÀßÄꤷ¤Æ¤Ê¤¤SDRAM¤ÎD-Cache̵¸ú¾õÂ֤Ǥ¹¡£
¡¡ºÇŬ²½¥¹¥¤¥Ã¥Á¤Ï-Ofast¡¢FONTX2¥É¥é¥¤¥Ð¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤«¤é¤Ç¤¹¡£


¢¬MPU¤ò»È¤Ã¤ÆSDRAM¤ÎD-CacheÍ­¸ú¡¢¥é¥¤¥È¥¹¥ë¡¼¤Ç¤¹¡£
¡¡ºÇŬ²½¥¹¥¤¥Ã¥Á¤Ï-Ofast¡¢FONTX2¥É¥é¥¤¥Ð¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤«¤é¤Ç¤¹¡£


¢¬MPU¤ò»È¤Ã¤ÆSDRAM¤ÎD-CacheÍ­¸ú¡¢¥é¥¤¥È¥Ð¥Ã¥¯¤Ç¤¹¡£
¡¡ºÇŬ²½¥¹¥¤¥Ã¥Á¤Ï-Ofast¡¢FONTX2¥É¥é¥¤¥Ð¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤«¤é¤Ç¤¹¡£


ͽÁÛÄ̤ꥭ¥ã¥Ã¥·¥å̵¸ú¤Î¥Ç¥Õ¥©¥ë¥È¾õÂÖ¤ÎÊý¤¬ÃÇÁ³¤Ï¤äi...
¡Ä
¡©¡©¡©
¡©¡©¡©¤É¤¦¤¤¤¦¤³¤È¤Ê¤ó¤À¡©¡©¡©(¢«C.V.ݯ°æ¤Î¥¤¥±¥Ü¤Ç)

¥­¥ã¥Ã¥·¥å̵¸ú¤¬°ìÈÖÁᤤ¤¸¤ã¤Ê¤¤¤Ç¤¹¤«¡¼¡ª¡©¤¿¤Ö¤óAXIM¥Ð¥¹·Ðͳ¤Ç¥×¥í¥°¥é¥à¤ò
¼Â¹Ô¤·¤Æ¤ë¤«¤é¥Ð¥¹¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤È¤«¥­¥ã¥Ã¥·¥å¥é¥¤¥ó¤¬´³¾Ä¤·¤Þ¤¯¤Ã¤Æ
µÕ¤Ë¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬Äã²¼¤·¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤·¤ç¤¦¤Í¡£
ޥޥޥ¤¹¤ß¤Þ¤»¤óŬÅö¤Ê¹Í»¡¤Ç¡Ä¤Æ¤ï¤±¤ÇAXI¥Þ¥È¥ê¥¯¥¹¤Î±Æ¶Á¤ò¼õ¤±¤Ê¤¤ITCM¤«¤é
¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤¹¤«¡£

¤½¤Î£²¡¥¥Õ¥é¥Ã¥·¥å¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÏITCM

¢¬MPU¤Ï²¿¤âÀßÄꤷ¤Æ¤Ê¤¤SDRAM¤ÎD-Cache̵¸ú¾õÂ֤Ǥ¹¡£
¡¡ºÇŬ²½¥¹¥¤¥Ã¥Á¤Ï-Ofast¡¢FONTX2¥É¥é¥¤¥Ð¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤«¤é¤Ç¤¹¡£


¢¬MPU¤ò»È¤Ã¤ÆSDRAM¤ÎD-CacheÍ­¸ú¡¢¥é¥¤¥È¥¹¥ë¡¼¤Ç¤¹¡£
¡¡ºÇŬ²½¥¹¥¤¥Ã¥Á¤Ï-Ofast¡¢FONTX2¥É¥é¥¤¥Ð¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤«¤é¤Ç¤¹¡£


¢¬MPU¤ò»È¤Ã¤ÆSDRAM¤ÎD-CacheÍ­¸ú¡¢¥é¥¤¥È¥Ð¥Ã¥¯¤Ç¤¹¡£
¡¡ºÇŬ²½¥¹¥¤¥Ã¥Á¤Ï-Ofast¡¢FONTX2¥É¥é¥¤¥Ð¤ÏÆâ¢¥Õ¥é¥Ã¥·¥å¤«¤é¤Ç¤¹¡£

ITCM·Ðͳ¤À¤È¥Ð¥¹¤Î¶¥¹ç¤¬¸º¤ê¤Þ¤¹¤Î¤Ç³Î¤«¤Ë¥­¥ã¥Ã¥·¥å¤¬¸ú¤¤¤Æ¤¤¤ë¤Î¤¬
ʬ¤«¤ê¤Þ¤¹¤Í¡ú
½ê¤ÇËÜÍè¤Ê¤é¥é¥¤¥È¥¹¥ë¡¼¤è¤ê¥é¥¤¥È¥Ð¥Ã¥¯¤ÎÊý¤¬Á᤯¤Ê¤ë¤Ï¤º¤Ê¤Î¤Ç¤¹¤¬¡¢
¥é¥¤¥È¥¹¥ë¡¼¤ÎÊý¤¬¤Û¤ó¤Î¾¯¤·Áᤤ·ë²Ì¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¥­¥ã¥Ã¥·¥å¤ò¸ú¤«¤»¤Æ
¤¤¤ë¤È¥­¥ã¥Ã¥·¥å¥Ò¥Ã¥È¤È¥ß¥¹¤Î»þ¤Î¥Ö¥ìÉý¤¬¤«¤Ê¤êÂ礭¤¯½Ð¤Æ¤¯¤ë¤Î¤Ç
¤½¤Ã¤Á¤ÎÊý¤¬µ¤¤Ë¤Ê¤ë¤¯¤é¤¤¤Ç¤¹¤±¤É¡£

¤ª¤­¤Ñ¤ÎF7¤Î¥µ¥ó¥×¥ë¤Ç¤ÏAXIM/ITCM¤ÎξÊý¤ÇSDRAMÎΰè¤ÎMPUÍ­¸ú¡¦¥é¥¤¥È
¥¹¥ë¡¼¥­¥ã¥Ã¥·¥åÀßÄê¤Ë¤·¤Æ¹¹¿·¤·¤Æ¤ª¤ê¤Þ¤¹¡£
°ÊÁ°¤ÏQSPI-ROM¤ËFONTX2¥É¥é¥¤¥Ð¤òÃÖ¤¤¤Æ¤¤¤¿¾ì¹çʸ»ú¤Îɽ¼¨¤ÇÊø¤ì¤ë
¤³¤È¤¬¤¢¤Ã¤¿¤Î¤Ç¤¹¤¬SDRAMÎΰè¤âMPU¡¦¥­¥ã¥Ã¥·¥åÍ­¸ú¤Ë¤¹¤ë¤È¤½¤ì¤¬
°ìÀÚȯÀ¸¤·¤Ê¤¯¤Ê¤Ã¤¿¤È¤¤¤¦Éû¼¡Åª¸ú²Ì¤¬¸«¤é¤ì¤Þ¤·¤¿¤Î¤ÇAXIM¤À¤È
¼ã´³¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬Íî¤Á¤Þ¤¹¤¬´º¤¨¤ÆMPU¤ò¸ú¤«¤»¤Æ¤¤¤Þ¤¹¡£

¤â¤Á¤í¤ó¥­¥ã¥Ã¥·¥å¤ò·Ðͳ¤¹¤ë¤ÈDMA¤ÎÌäÂ꤬¤Þ¤¿»ý¤Á¾å¤¬¤Ã¤Æ¤­¤Þ¤¹¤¬
»ä¤Î¥µ¥ó¥×¥ë¤Ç¤ÏDMA2D¤ò¤½¤¦¤Ê¤ë»È¤¤Êý¤Ï¤·¤Æ¤Ê¤¤¤Î¤¬Ê¬¤«¤Ã¤¿¤Î¤Ç
DMAÂкö¤ÏÆÃ¤Ë¹Ô¤ï¤ºÍͻҸ«¤È¤·¤Æ¤ª¤ê¤Þ¤¹¡£

¤µ¤é¤Ë¤Ä¤¤¤Ç¤Ç¤¹¤¬CubeF7¤âV1.2.0¤Ë¤Ê¤Ã¤ÆHAL¥é¥¤¥Ö¥é¥ê¤âV1.0.2¤Ë
¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤Çº¹¤·Âؤ¨¤Æ¤¢¤ê¤Þ¤¹¡£
¤Ç¤âSDMMC¤Îuint64_t¤Ç½èÍý¤·¤Ê¤­¤ã¤Ê¤é¤Ê¤¤½èÍý¤¬uint32_t¤Î¤Þ¤Þ¤Ç
¤Þ¤À¼£¤Ã¤Æ¤Ê¤¤¤Î¤Ç»ä¼«¤éHAL¥é¥¤¥Ö¥é¥ê¤Ë½¤Àµ¤ò²Ã¤¨¤Æ¤ª¤­¤Þ¤·¤¿Ž¸Ž¿Ž§¡ª

STM32F7¤ò»È¤Ã¤Æ¤ß¤ë6 -¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎϤÈQSPI¤ÎÄɲÃ-

¤â¤¦µ¤¤Å¤¤¤¿Êý¤â¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬STM32F7¸þ¤±¤Î¤¤¤Ä¤â¤Î¤ò9·î1ÆüÈǤË
¹¹¿·¤·¤Æ¤ª¤ê¤Þ¤¹¡£
Êѹ¹ÅÀ¤ÏºÙ¤«¤¤¥Ð¥°ÄÙ¤·¤ÈÍÆÎÌÀ­¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎÏ¡¢¤½¤·¤ÆQSPI¤ÎÂбþ¤Ç¤¹¡£

¡üCTP(ÍÆÎÌÀ­¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎÏ)Âбþ
STM32F7Discovery¤Ë¤Ï¾åµ­¤Î¥¿¥Ã¥Á¥Ñ¥Í¥ëÉÕ¤­¤ÎTFT-LCD¥â¥¸¥å¡¼¥ë¤¬ÅëºÜ
¤µ¤ì¤Æ¤¤¤Þ¤¹¡£·¿È֤ǥ°¥°¤Ã¤Æ¤â½Ð¤Æ¤³¤Ê¤¤¤Î¤Ç¤ª¤½¤é¤¯ÆÃÃíÉʤʤΤǤ·¤ç¤¦¡£
CTP¥³¥ó¥È¥í¡¼¥é¤Ë¤ÏFT5336GQQ¤Ê¤ëʪ¤¬»ÈÍѤµ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£

¤µ¤Æ¡¢°ÊÁ°¤Ï¤â¤Ã¤È¤âñ½ã¤ÊADS7843·Ï¡¢¤Á¤ç¤Ã¤È¥¤¥ó¥Æ¥ê¥¸¥§¥ó¥¹¤Ê
µ¡Ç½¤ò¤â¤ÄSTMPE811Åù¤ÎÄñ¹³Ëì¼°¤Î¤â¤Î¤ò°·¤Ã¤Æ¤­¤Þ¤·¤¿¡£
ÍÆÎÌÀ­¤Î¾ì¹ç¤Ï¥á¥«¥Ë¥º¥à¤¬Á´¤¯°ã¤¤Ê£»¨¤Ë¤Ê¤ë¤Î¤ÇÀìÍÑIC¤ËÍê¤é¤¶¤ë¤ò
ÆÀ¤Ê¤¤¤Î¤Ç¤¹¤¬¤½¤ì¤Î»È¤¤Êý¤òÇİ®¤¹¤ë¤Î¤Ç¤â¤³¤ì¤Þ¤¿Ê£»¨¤ÇÀµ¹¶Ë¡¤Ç
¹Ô¤¯¤È¤È¤Æ¤â»þ´Ö¤¬¤«¤«¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

¤½¤ó¤Ê¤ï¤±¤ÇST¥Þ¥¤¥¯¥íÄ󶡤ÎCubeF7¥é¥¤¥Ö¥é¥ê·²¤Ë¤ÏBSP¤È¤·¤Æ
FT5336GQQÍѤΥ¢¥¯¥»¥¹ÍÑ´Ø¿ô¤¬¤Á¤ã¤ó¤ÈÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£
¤·¤«¤âF7-DiscoveryÍѤËI/O¤ÎÀßÄê¤â¸æëФ¨¤Æ¤ª¤ê¤Þ¤¹¡£

¼ÂÁõ¤ÏÇï»ÒÈ´¤±¤¹¤ë¤¯¤é¤¤ÍưפǤ·¤¿¡£»ä¤Î²áµî¤Î¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎϤÎ
½èÍý¤È·ë¹ç¤µ¤»¤ÆGPIO¤Î¥¨¥Ã¥¸³ä¤ê¹þ¤ß¤Î½èÍý¤òÄɲ乤ë¤À¤±¤ÇºÑ¤ß¤Þ¤·¤¿¡£
F7-Discovery¤Î¥Ç¥â¤Ç¤Ï¥¿¥Ã¥Á¤·¤¿¾õÂÖ¤¬ÊѤï¤é¤Ê¤¤¤È³ä¤ê¹þ¤ß½èÍý¤ò
È´¤±¤é¤ì¤Ê¤¤¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¥Ç¥Ã¥É¥í¥Ã¥¯¤Î´í¸±À­¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢
¤½¤³¤À¤±¤Ï¾Ê¤¤¤Æ¤¤¤Þ¤¹¡£


¾¤Î¾å°Ì¤Î¥ì¥Ù¥ë¤Î½èÍý¤Ï°ìÀÚÊѤ¨¤Æ¤¤¤Ê¤¤¤Î¤Ç²áµî¤ÎÄñ¹³Ëì¼°¤Î¤â¤Î¤ÈƱ¤¸
¤è¤¦¤Ê´¶³Ð¤ÇÁàºî¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

ËÜÍè¤Ê¤é¤ÐFT5336GQQ¤ÎBSP¤¬¤ä¤Ã¤Æ¤ë½èÍý¤òʬ²ò¡¦ºÆ¹½ÃÛ¤·¤Æ¼«Ê¬ÆÈ¼«¤Î
¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎϽèÍý¤È¤¹¤Ù¤­¤È¤³¤í¤Ê¤Î¤Ç¤¹¤¬»Äǰ¤Ê¤¬¤é»ä¤Îµ»½ÑÎϤϤ½¤³¤Þ¤Ç
µÚ¤Ð¤º¤¢¤¨¤Ê¤¯°Â°×¤ÊÊýË¡¡¢"½ÐÍè¹ç¤¤¤Î½èÍý"¤òÄ󼨤µ¤ì¤¿¥é¥¤¥»¥ó¥¹¤Ë½¾¤Ã¤Æ
ÍøÍѤµ¤»¤Æ¤â¤é¤¦¤³¤È¤Ë¤·¤Þ¤·¤¿¡£F7¤Ë¤Ê¤Ã¤Æ¤«¤é¤ÏÊ£»¨²½¤âÁê¤Þ¤Ã¤Æ¤½¤¦¤¤¤¦
¾ìÌ̤¬Â¿¿ô½Ð¤Æ¤­¤Æ¤¤¤Þ¤¹¡£
»ä¤âµð¿Í¤Î¸ª¤Î¾å¤Ë¾è¤ë¾®¿Í¤Î¤¦¤Á¤Î°ì¿Í¤Ë¤¹¤®¤Ê¤¤¤Î¤Ç¤¹¡Ä!

Á°¸þ¤­¤Ë¹Í¤¨¤ë¤È¥½¡¼¥¹¥³¡¼¥É¤ò¸ø¼°¤Î¤â¤Î¤È¸ß´¹À­¤ò»ý¤¿¤»¤ÆÌäÂê¤òÀÚ¤êʬ¤±
°×¤¯¤¹¤ë¤Ê¤ó¤Æ¤³¤È¤â¸À¤¨¤Þ¤¹¤¬¤æ¤¯¤æ¤¯¤ÏSegger¤ÎSTemWin¤È¤«¤â»È¤Ã¤Æ¤ß¤¿¤¤
¤Î¤Ç²¿¤Ç¤â¤«¤ó¤Ç¤â¼«ºî¤Ë¤È¤é¤ï¤ì¤º½ÀÆð¤Ë¤ä¤Ã¤Æ¤³¤¦¤È»×¤¤¤Þ¤¹¡£
¤â¤Ê¤«¤µ¤ó¤â¤³¤¦¸À¤Ã¤Æ¤Þ¤¹¤·¤Ç¤âÁǤÎEclipse¤Ê¤ó¤ÆÀäÂФ˻Ȥ¤¤Þ¤»¤ó¤è¤¥¡ª¡ª
޹ŽÞŽÎ޹ŽÞŽÎޥޥޥŽÊާŽÊާ¼ºÎéŽ¥Ž¥Ž¥¼¡¤Ë¿Ê¤ß¤Þ¤·¤ç¤¦Ž¥Ž¥Ž¥


¡üQSPI-ROM¤ò¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤Ç»È¤¦

¤³¤Á¤é¤ÏLPC4330¤Î»þ¤Ë¤â¾Ò²ð¤·¤¿ÅÛ¤ÈÆ±¤¸¤Ç¤¹¤Í¡£SPI-ROM¤Î¥á¥â¥êÎΰ褬
ÆÃÊ̤ʴؿô¤ò·Ðͳ¤»¤º¤Ë¥ê¥Ë¥¢¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤ë¤È¤¤¤¦ÊØÍø¤Êµ¡¹½¤Ç¤¹¡£

¤³¤ÈSTM32F7¤Ë¸Â¤Ã¤Æ¤ÏD-Cache¤ò¶´¤à¤Î¤Ç½¾Íè¤ÎSPI-ROM¤Ç¤Ï¤É¤¦¤·¤è¤¦¤â
¤Ê¤«¤Ã¤¿Â®ÅÙŪ¤Ê¥Ü¥È¥ë¥Í¥Ã¥¯¤Ï¤¢¤ëÄøÅÙ²ò¾Ã¤µ¤ì¤ë¤è¤¦¤Ç¤¹¡£


F7¤ÎHAL¥é¥¤¥Ö¥é¥ê¤Ë¤ÏQSPI¤Î´Ø¿ô/BSP¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¤¬¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É
¤Ç»ÈÍѤ¹¤ë¾ì¹ç¤Ï°ìÅÙ¥¤¥Ë¥·¥ã¥é¥¤¥º¤·¤µ¤¨¤¹¤ì¤Ð¸å¤ÏÉáÄÌ¤ÎÆâ¢¥Õ¥é¥Ã¥·¥å
¥á¥â¥ê¤ÈÁ´¤¯¤ª¤ó¤Ê¤¸¤Ç¤¹¡£


º£²ó¤âBSP¤òºÇÂç¸Â¤ËÍøÍѤµ¤»¤Æ¤â¤é¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢QSPI¤Î¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤Ç¤Ï
ÆÉ¤ß½Ð¤·ÀìÍѤǻȤ¦¾ì¹ç¤Ï³ä¤ê¹þ¤ß½èÍý¤ÏÁ´¤¯ÉÔÍפʤΤǽé´ü²½»þ¤ÎNVIC¤ÎÀßÄê
¤ò¾Ê¤¤¤Æ¤ª¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

»ä¤ÏQSPI-ROM¤òFONTX2¤Î¥Ç¡¼¥¿ÃÖ¾ì¤È¤·¤ÆÍøÍѤ·¤Þ¤·¤¿¡£
F746Discovery¤Ç¤ÏN25Q128A¤¬ÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£N25Q128A¤Ï°ì¥»¥¯¥¿¤¢¤¿¤ê
64kByte¤º¤Äʬ¤«¤ì¤Æ¤¤¤Þ¤¹¤Î¤ÇFONTX2¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤à¥¢¥É¥ì¥¹¤ÏȾ³Ñ¤ò
0x90000000¡¢Á´³Ñ¤Ï0x90010000¤ËÇÛÃÖ¤·¤Æ¤ß¤Þ¤·¤¿¡£


¤¢¤ÈQSPI-ROM¤Ë¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤àÊýË¡¤Ç¤¹¤¬STLinkUtility¤ÎVer3.7¤«¤éF7Discovery
ÍѤγ°Éô¥Õ¥é¥Ã¥·¥å¥í¡¼¥À¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤òÍøÍѤ·¤Æ½ñ¤­¹þ¤ß¤Þ¤¹¡£


À褺¤ÏȾ³Ñ


¤ª¼¡¤ÏÁ´³Ñ¡£
¤Ê¤ó¤Ç¤«³ÈÄ¥»Ò¤Ïbin,elf,hex¤·¤«ÂÌÌܤʤΤÇFONTX2¥Õ¥¡¥¤¥ë½ñ¤­¹þ¤àºÝ¤Ï
³ÈÄ¥»Ò¤òbin¤ËÊѤ¨¤Æ½ñ¤­¹þ¤ó¤Ç¤¯¤À¤µ¤¤¡£


¤³¤¦¤ä¤Ã¤ÆQSPI-ROM¤Ë½ñ¤­¹þ¤ó¤À¥Ç¡¼¥¿¤Ï¾åµ­¤Î¤è¤¦¤Ë¤·¤Æ»²¾È¤·¤Þ¤¹¡£
¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤À¤«¤é¤Ç¤­¤ëµ»¤Ç¤¹¤Í¡Á


̵»ö¤Ëµ¯Æ°¤·¤Þ¤·¤¿¡£S-JIS·Á¼°¤Îtxtʸ½ñ¤â¤´¤é¤ó¤ÎÄ̤ê¤Ç¤¹¡£
¥Ó¥ë¥É»þ¤ËµðÂç¤ÊFONTX2¥Õ¥¡¥¤¥ë¤òÁȤ߹þ¤àɬÍפ¬¤Ê¤¯¤Ê¤ê¡¢¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ß
¤Ë³Ý¤«¤ë»þ´Ö¤âÀáÌó¤Ç¤­¤Æ¥Æ¥ó¥Ý¤è¤¯¥Ç¥Ð¥Ã¥°¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¡£



¥Ç¥Ð¥Ã¥¬¤«¤éQSPI¤Î¥á¥â¥ê¤ò»²¾È¤¹¤ë¤È¤³¤ó¤Ê´¶¤¸¤Ë¸«¤¨¤Þ¤¹¡£
¤â¤Á¤í¤ó»²¾È»þ¤Ï¥á¥â¥ê¥Þ¥Ã¥×¥É¥â¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤ÏȾ³Ñ¤ÎFONTX2¤Ç¤¹¡£


¤³¤Á¤é¤ÏÁ´³Ñ¤Ç¤¹¡£



¸½ºß¤Ï¤Þ¤À¸ÂÄêŪ¤«¤Ä¼Â¸³Åª¤Ê»ÈÍѤˤȤɤޤäƤ¤¤Þ¤¹¤¬QSPI-ROM¤ÎÍ­¸ú¤Ê
³èÍÑË¡¤¬¿·¤¿¤Ë¸«¤Ä¤«¤Ã¤¿¤é¾Ò²ð¤·¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£



¡ü¤ª¤Þ¤±
¤¤¤Ä¤â¤Î¤Îmakefile¤ß¤¿¤é²¿¤ò¤É¤¦¤¹¤ì¤Ð¤ï¤«¤ë¤È¤Ï»×¤¤¤Þ¤¹¤¬¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï
°Ê²¼¤Î"¤Ò¤È¤Þ¤º³Î¼Â¤Ëư¤¯ÀßÄê"¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

1:Æâ¢¥Õ¥é¥Ã¥·¥å¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
¡¡->AXIM
2:SDRAM
¡¡->Í­¸ú
3:¥¿¥Ã¥Á¥Ñ¥Í¥ë
¡¡->Í­¸ú
4:FONTX2
¡¡->Æâ¢¥Õ¥é¥Ã¥·¥å¤«¤é»²¾È¤«¤ÄQSPI¤Ï̵¸ú

"4:"¤ÎFONTX2¤Î¥É¥é¥¤¥Ð¤ÇQSPI-ROM¤ò»²¾È¤·¤¿¤¤¾ì¹ç¤ÏÅö¤¿¤êÁ°¤Ç¤¹¤¬¡¢
¤¢¤é¤«¤¸¤áȾ³Ñ/Á´³Ñ¤½¤ì¤¾¤ì¤ÎFONTX2¥Õ¥¡¥¤¥ë¤ò¾å¤Ç¾Ò²ð¤·¤¿¼ê½ç¤Ç
QSPI-ROM¤ÎŬÀڤʥ¢¥É¥ì¥¹¤ËSTLinkUtil¤ò»ÈÍѤ·¤Æ½ñ¤­¹þ¤ó¤Ç¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

STM32F7¤Ï¤Â¤á¤Þ¤·¤¿

ºòǯ½©¤Ë¥×¥ì¥¹¥ê¥ê¡¼¥¹¤Çȯɽ¤µ¤ì¤¿STM32F7¤Ç¤¹¤¬»ä¤¬ESP-ROOM-02Ï®¤ê¤Ë
Ì´Ãæ¤Ë¤Ê¤Ã¤Æ¤ë´Ö¤Ë¤Ò¤Ã¤½¤ê¤È»Ô¾ì¤ËήÄ̤·¤Æ¤ª¤ê¤Þ¤·¤¿¡£
ŽË¤ò¸«¤Æ¤¿¤é¹ñÆâ³°Ìä¤ï¤º´û¤ËÆþ¼ê¤·¤ÆOpenOCD¤Ç¥Ð¥ê¥Ð¥ê»È¤¤Åݤ·¤Æ¤ë¿Í¤¿¤Á¤â¤¤¤Æ
STM32¹¥¤­¤Î»ä¤È¤·¤Æ¤Ï¤¹¤Ã¤«¤êή¤ì¤Ë¼è¤ê»Ä¤µ¤ì¤¿´¶¤¸¤Ç¤¹¤¬DigiKey¤ÇÂçÎ̤˺߸Ë
¤·¤Æ¤¤¤¿¤Î¤Ç»ä¤â°ì¤Ä¹ØÆþ¤·¤Æ¤ß¤Þ¤·¤¿¡£



ÌܤÎÁ°¤Ë¸½¤ì¤¿STM32F7-Discovery¤Ï»ä¤ÎÃΤäƤëDiscovery·Ï¤Î¥­¥Ã¥È¤ÎÁÛÁü¤ò
ͤ¨¤¿±Õ¾½¤âSD¥«¡¼¥É¥¹¥í¥Ã¥È¤â³°ÉôSDRAM¤âQSPI-ROM¤â¤Ä¤¤¤¿Ì´¤ÎÁ´ÉôºÜ¤»¤Ç¤·¤¿¡ª
¤Á¤Ê¤ß¤Ë±Õ¾½¤Î¥¿¥Ã¥Á¥Ñ¥Í¥ë¤ÏÄñ¹³Ëì¼°¤Ç¤Ï¤Ê¤¯¤Ê¤ó¤ÈÀÅÅÅÍÆÎ̼°¤Ç¤¹¡ª
¤Ê¤ó¤Æ¥´¡¼¥¸¥ã¥¹¤Ê¡Ä


Cortex-M7¥³¥¢¤ò»ý¤ÄSTM32F746NGH6¤¬ÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¹¥Ú¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤Ïºòǯ
½©¤â¿¨¤ì¤Þ¤·¤¿¤¬ÎÌ»º³«»Ï¸å¤ËºÇÂçÆ°ºî¼þÇÈ¿ô¤¬200->216MHz¤Ë¥Ñ¥ï¡¼¥¢¥Ã¥×¤·¤Æ
¤Þ¤¹¡£¥Ç¥Ð¥Ã¥¬¤ÏSTLinkV2-1¤¬ÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


ÅöÁ³¤Î¤´¤È¤¯SDRAM¤¬ÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Micron¤Î128MBit¤ÎSDRAM¤Ç¤¹¡£


Ʊ¤¸¤¯STM32F7¥·¥ê¡¼¥º¤ÎÌ̤ܶΰì¤ÄQ(uad)SPI-ROM¤Ç¤¹¡£LPC4000¥·¥ê¡¼¥º¤Î
SPIFI¤ÈƱ¤¸¤¯¥ê¥Ë¥¢¤Ê¥¢¥¯¥»¥¹¤¬¤Ç¤­¤ë¤Î¤¬ÆÃħ¤Ç¤¹¡£FontX2¥Õ¥¡¥¤¥ëÅù¤Î
Â絬Ìϥǡ¼¥¿¤Ï°ìÀÚ¹çºâ¤³¤³¤Ë¤Ö¤Á¹þ¤ß¤Þ¤·¤ç¤¦¡ª


¤Þ¤¿¡¢EthernetÍѤÎPHY¤âÅëºÜ¤Ç¤¹¡£Àܳ¤¹¤ë¥Ô¥ó¿ô¤¬¾¯¤Ê¤¤RMIIÊý¼°¤Ç
STM32F7¤ÈÀܳ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


¤µ¤é¤ËUSB-HighSpeedÍѤÎPHY¤Þ¤Ç¤Ä¤¤¤Æ¤¤¤Þ¤¹¡ª¡ª¤³¤Á¤é¤ÏULPI¤ÇÀܳ¤µ¤ì¤Þ¤¹¡£
¸å¤Ç¿¨¤ì¤Þ¤¹¤¬USB¥á¥â¥ê¤òÀܳ¤¹¤ë¤Î¤Ë¤Á¤ç¤¦¤ÉÎɤ¤¤Ç¤¹¤Í¡£


¤µ¤é¤Ë¤µ¤é¤ËI2S-Codec¤âÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡ª¡ª¡ªSTM32F4¤Ç¤âÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬
Ʊ¤¸¤è¤¦¤Ë"¤¤¤Ä¤â¤Î"¤¬½ÐÍ褽¤¦¤Ç¤¹¡£SAI¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÇÀܳ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


¤½¤·¤Æ¤³¤ì¤À¤±¤½¤í¤Ã¤Æ¤ªÃÍÃʤϤʤʤʤó¤È$50¤Ç¤¹¤è±ü¤µ¤ó¡ª¡ª(DigiKey¤è¤ê)
¤³¤ó¤Ê»þÂå¤Ë¤Ê¤Ã¤¿¤Î¤Ç¤¹¤Í¡Ä2009ǯ¤Î¤³¤í¤ÏÁ´¤¯¹Í¤¨¤é¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç¤¹¤¬¡Ä
¤·¤ß¤¸¤ß












¤·¤ß¤¸¤ß¤¹¤ë¤Î¤Ï¤½¤ÎÊդˤ·¤ÆÁᮤ¤¤¸¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
STLink¦¤ÎUSB-miniB¥±¡¼¥Ö¥ë¤òPC¤ÈÀܳ¤¹¤ë¤È¥É¥é¥¤¥Ð¤òÆÉ¤ß¹þ¤ó¤À¸åSTM32F7
¦¤Ë¤âÅŸ»¤¬¶¡µë¤µ¤ì¤Æ¥×¥í¥°¥é¥à¤¬Áö¤ê½Ð¤·¤Þ¤¹¡£
¤¹¤°¤Ë¥Ê¥¦¤¤¥í¥´¤¬½Ð¤Æ¤­¤Þ¤¹¡£


¤¹¤°¤Ë¥á¥Ë¥å¡¼²èÌ̤ˤʤꡢ¥¿¥Ã¥×¤Ç¤¤¤¯¤Ä¤«¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Áª¤Ù¤ë¤è¤¦¤Ë
¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤·¤«¤âCPU¤ÎÉé²ÙΨ¤â¥ê¥¢¥ë¥¿¥¤¥à¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£


200MHz¤Çư¤¤¤Æ¤¤¤ë¤Î¤Ç·ë¹½È¯Ç®¤·¤Þ¤¹¡£F4¥·¥ê¡¼¥º¤È°ã¤Ã¤Æ¦¤T¤Ï10Åٰʾ夢¤ë¤È
»×¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤ì¤Ç¤â¾¤ÎÉʼï¤ÎƱ¼þÇÈ¿ô¤Î¤â¤Î¤ÈÈæ¤Ù¤ë¤ÈÄ㤤¤Û¤¦¤Ç¤¹¤¬¡£


ÀÅÅÅÍÆÎ̼°¥¿¥Ã¥Á¥Ñ¥Í¥ë(CTP)¤Ê¤Î¤ÇʪÍý¤Ç²¡¤·¤Æ¤â¤À¤á¤Ç¤¹¡£»Ø¤ÇÁàºî¤·¤Þ¤·¤ç¡£


À褺¤Ï"audioplayer"¤Ç¤¹¡£USB¥á¥â¥ê¤Ë»Å¹þ¤ó¤Àwave¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤ó¤ÇºÆÀ¸¤·
¤Þ¤¹¡£¥Ç¥â¤ÏHS¦¤ÎUSB-OTG¤À¤±¤·¤«È¿±þ¤·¤Þ¤»¤ó¤Î¤Ç¤´Ãí°Õ¤¯¤À¤µ¤¤¡£USB-FS¤ä
SD¥«¡¼¥É¤Ï̤¼ÂÁõ¤Î¤è¤¦¤Ç¤¹¡£


ºÆÀ¸¤·¤Æ¤ë½ê¤Ç¤¹¡£²»ÎÌÄ´À᤬¶¹¤¯¤Æ²»Î̤ò¾å¤²¤è¤¦¤È¤¹¤ë¤È»Ø¤¬¥á¥Ë¥å¡¼¤Ë
¤¢¤¿¤Ã¤Æ¤·¤Þ¤Ã¤ÆºÇ½é¤Î²èÌ̤ËÌá¤Ã¤Æ¤·¤Þ¤¤¤¬¤Á¤Ç¤¹¡£¤É¤¦¤Ç¤â¤¤¤¤¤Ç¤¹¤¬¡£


info¥á¥Ë¥å¡¼¤Ç¤Ï¸½ºß¤Îưºî¼þÇÈ¿ô¤ä¥Õ¥¡¡¼¥à¥¦¥¨¥¢¤Î¥Ð¡¼¥¸¥ç¥ó¤¬É½¼¨¤µ¤ì¤Þ¤¹¡¢
¥Õ¥¡¡¼¥à¥¦¥§¥¢¤È¤ä¤é¤ÏÌÞÏÀSTM32CubeF7¤Î»ö¤Ç¤¹¡Ä¡£
¤É¤¦¤Ç¤â¤¤¤¤¤³¤È¤Ç¤¹¤¬¤¿¤Þ¤Ë°ÛÍͤËCPUÉé²Ù¤¬100%¤Ë¤Ê¤Ã¤ÆÆ°ºî¤¬°ÛÍͤˤâ¤Ã¤µ¤ê
¤·¤¿¤ê¸Ç¤Þ¤Ã¤¿¤ê¤¹¤ë¤Î¤Ç¤¹¤¬»ä¤ÎÁàºî¤¬Á᤹¤®¤ë¤»¤¤¤Ê¤Î¤Ç¤·¤ç¤¦¤«¡©¡©¡©




¤µ¤Æ¡¢¥Ç¥â¥×¥í¥°¥é¥à¤ò¿¨¤ë¤Î¤Ï¤³¤ÎÊդˤ·¤Æ¤Í¤à¤¤¤µ¤ó¤Î¤¤¤Ä¤â¤Î¤Î½àÈ÷¤ò¡¢
GCC¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ó¥ë¥É¤Ç¤­¤ë´Ä¶­¤ò¸Ç¤á¤Æ¹Ô¤³¤¦¤È»×¤¤¤Þ¤¹¡£OpenOCD¤Ï¤Þ¤À
¥ì¥Ó¥å¡¼Ãʳ¬¤Ç¤¹¤¬STM32F7¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ßÍѥѥåÁ¤¬¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ʵ¤ä¤ä¤³¤·¤¤¤Î¤Ç¤¹¤¬¥Ñ¥Ã¥Á¤ÏCortex-M7ÍѤÈSTM32F7ÍѤÎ2¼ïÎफɬÍפǤ·¤¿
http://openocd.zylin.com/#/c/2786/
http://openocd.zylin.com/#/c/2784/
http://openocd.zylin.com/#/c/2753/4
http://openocd.zylin.com/#/c/2753/5
2753¤ÏÍ×Ãí°Õ¤Ç¤¹¡£#5¤Î¥Ñ¥Ã¥Á¤À¤±¤¢¤Æ¤Æ¤âF7Âбþ¤Ë¤Ê¤ê¤Þ¤»¤ó¡ª

¤Þ¤¡¤ä¤êÊý¤µ¤¨¤ï¤«¤ì¤Ð¥Ó¥ë¥É¤Ï¤¤¤Ä¤â¤É¤ª¤ê¤Ê¤Î¤Ç¤é¤¯¤Á¤ó¤Ç¤¹¡ú
¥Ð¥¤¥Ê¥ê¤Ï´û¤ËSTM32F7Âбþ¤Ë¹¹¿·¤·¤Æ¤¢¤ê¤Þ¤¹♥
cfg¥Õ¥¡¥¤¥ë·²¤â¹¹¿·¤·¤Þ¤·¤¿¤Î¤Ç¤É¤¦¤¾¡£


STLink/V2-1¤â¥Õ¥¡¡¼¥à¤¬M11¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç»öÁ°¤Ë¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ
¤ª¤­¤Þ¤·¤ç¤¦¡£STLink-Utility¤â3.6¤Ë¹¹¿·¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
20150714ÄÉ:
M11¤Ë¹¹¿·¤·¤Ê¤¤¤ÈOpenOCD¤Ç½ñ¤­¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Î¤Ç¤´Ãí°Õ¡ª¡ª¡ª¡ª



¤Þ¤ÀF7¸þ¤±¤ÎGCC¥×¥í¥¸¥§¥¯¥È¤Ï¤³¤µ¤¨¤Æ¤¤¤Ê¤¤¤Î¤Çµ­»ö¤ò½ñ¤¯2ÆüÁ°¤Ë1.0.1¤Ë
¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿¤Ð¤Ã¤«¥ê¤ÎCubeF7¤ÎF7Discovery¸þ¤±¤Î¥Ç¥â¥×¥í¥°¥é¥à¤Î
¥Ó¥ë¥ÉºÑ¤ßhex¥Õ¥¡¥¤¥ë¤òOpenOCD¤«¤é¾Æ¤¤¤Æ¤ß¤Þ¤¹¡£¤½¤ÎÁ°¤ËSTLink-Utility¤Ç
Àܳ¤·¡¢¥Ç¥â¥×¥í¥°¥é¥à¤Îhex¤òÆÉ¤ß¹þ¤Þ¤»¤Æ¤ß¤Þ¤·¤¿


¤³¤Îhex¥Õ¥¡¥¤¥ë¡¢19MByte¤âÍ­¤ë¤Î¤Ç¤¹¤¬¥Õ¥©¥ó¥È¤È²èÁü¥Ç¡¼¥¿¤¬¤¢¤ëQSPI¤ÎÎΰè¤â
´Þ¤Þ¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¹(0x90000000°Ê¹ß¤ÎÎΰè)¡£¤Þ¤À³°ÉÕ¤±¤ÎQSPI¤ÎÆÉ¤ß½ñ¤­¤Ë¤Ï
Âбþ¤·¤Æ¤¤¤Ê¤¤¤Î¤ÇÆâ¢¥Õ¥é¥Ã¥·¥å¤·¤«½ñ¤­¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤¬QSPI¤Ë»Å¹þ¤ó¤Ç
¤¢¤ë¥Ç¡¼¥¿¤Ï¥·¥«¥È¤·¤ÆÆâ¢¥Õ¥é¥Ã¥·¥å¤Î¤À¤±ÌµÍý¤ä¤ê¹¹¿·¤Ç¤­¤Þ¤¹¡£


STLink-Utility¤ÎExternalFlashLoader¤ËF7Discovery¸þ¤±¤ÎQSPI¥É¥é¥¤¥Ð̵¤¤¤ó¤Ç¤¹
¤±¤©Ž¥Ž¥Ž¥###¤½¤ì¤Ï¤ª¤¤¤È¤¤¤ÆOpenOCD¤ËÏäò°Ü¤·¤Þ¤¹¡ª¡ª¡ª¡ª


°Æ¤ÎÄêQSPI¤ÎÎΰè¤Ç¤Ï¥¨¥é¡¼¤¬½Ð¤Þ¤¹¤¬²¿¤È¤«¥Õ¥é¥Ã¥·¥å¤Ï½ñ¤­¹þ¤ß¤Ç¤­¤Æ¤Þ¤¹¡£


̵»ö¥Õ¥¡¡¼¥à¥¦¥¨¥¢¤òV1.0.1¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡£



¤½¤ó¤Ê¤ï¤±¤ÇSTM32F7¤ò¤Û¤ó¤È¤Ë¿¨¤ê¤À¤±¤Ç¤·¤¿¤¬¿¨¤ì¤Æ¤ß¤Þ¤·¤¿¡£
¤³¤ì¤«¤é¤¤¤Ä¤â¤Î¥Ó¥ë¥É´Ä¶­¤Ë¹ç¤ï¤»¤¿¥×¥í¥¸¥§¥¯¥Èºî¤ê¤ò¿Ê¤á¤Æ¹Ô¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£
F4¤Î»þ¤ËCubeF4¸þ¤±¤Ë¥Ú¥ê¥Õ¥§¥é¥ë¥É¥é¥¤¥Ð¤Î°Ü¿¢¤ò»î¤ß¤Þ¤·¤¿¤¬·ë¶ÉUART¤Þ¤Ç¤·¤«
¼ÂÁõ¤Ç¤­¤Ê¤«¤Ã¤¿¤Î¤Çº£ÅÙ¤³¤½Ëܵ¤½Ð¤·¤Þ¤¹¡ª¡ª
(2ǯ¤Ö¤ê4ÅÙÌÜ)

STM32F7¤¬È¯É½¤Ë¤Ê¤Ã¤ÆCMSIS¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤â¤è¤¦¤ä¤¯V4.00¤Ë¤Ê¤Ã¤¿

20150717ÄÉ
STM32F7¤Ï¤Â¤á¤Þ¤·¤¿
20150717ÄÉ


¾¯¤·Á°¤ËCortex-M4¤ò¤µ¤é¤Ë¿Ê²½¤µ¤»¤¿Cortex-M7¤¬È¯É½¤µ¤ì¡¢¤Í¤à¤¤¤µ¤ó¤ò´Þ¤à
°ìÉô¤ÎÊý¤Î´Ö¤ÇÁûÁ³¤È¤·¤Æ¤ª¤ê¤Þ¤·¤¿¡£Æ±»þ¤ËSTMicro¤µ¤ó¤«¤é¤âƱ¥³¥¢¤¬ÅëºÜ¤µ¤ì¤¿
STM32F7¥·¥ê¡¼¥º¤¬È¯É½¤µ¤ì¡¢´û¤ËBGAÉʤ¬¥µ¥ó¥×¥ë¤È¤·¤Æ
½Ð²Ù¤µ¤ì¤Æ¤¤¤ë¤½¤¦¤Ç¤¹¡£

´û¤ËSTM32F7ÍѤΥµ¥¤¥È¤â¤¢¤Ã¤Æ¥Ç¡¼¥¿¥·¡¼¥È¤â
¸ø³«¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹(RM¤Ï¤Þ¤À¤Ç¤¹¡Ë¡£
Cortex-M7¥³¥¢¤Ç¤ÏAXI+AHB¤Î¥Þ¥È¥ê¥¯¥¹¤Ë¤Ê¤ê¡¢Ì©·ë¹ç¥á¥â¥ê(TCM)¤â
¥¤¥ó¥¹¥È¥é¥¯¥·¥ç¥ó¤È¥Ç¡¼¥¿ÀìÍѤËÍѰդµ¤ì¤µ¤é¤Ë³°Éô¥á¥â¥êÍѤËI/D¤È¤â
4kByte¤º¤ÄL1¥­¥ã¥Ã¥·¥å¤âÅëºÜ¤µ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤¬STM32F7¤ÇÃåÌܤ·¤¿¤Î¤ÏLPC4300¥·¥ê¡¼¥º¤Ç¤Ï¤ª¤Ê¤¸¤ß¤Î¥¯¥¢¥Ã¥É
SPI-ROM¤ÎÂбþ
¤Ç¤¹¡£
¤³¤ì¤Ë¤è¤ê¥ê¥Ë¥¢¤Ê¥¢¥É¥ì¥¹¤ËÇÛÃÖ¤µ¤ì¤ÆÆâ¢¥Õ¥é¥Ã¥·¥å¤ÈƱ¤¸´¶³Ð¤Ç
»ÈÍѤǤ­¤ë¤³¤È¤Ë¤Ê¤ë¤¿¤áFONTX2¤Î¤è¤¦¤ÊÂçÍÆÎ̤Υǡ¼¥¿¤ò°·¤¦¥×¥í¥°¥é¥à¤â
ÁȤ߰פ¯¤Ê¤ê¤Þ¤¹¤Í♥
Æâ¢¥Õ¥é¥Ã¥·¥å¤¬1MB¤ËÍÞ¤¨¤é¤ì¤Æ¤¤¤ë¤Î¤â¥Ç¡¼¥¿¤Î²ô¤ÏSPI-ROM¤Ë²¡¤·¹þ¤á¤è
¤È¤¤¤¦°Õ¿Þ¤¬¤¢¤ë¤È»×¤¤¤Þ¤¹¡£

¤¢¤ÈCortex-M7¤Ç¤ÏÉâÆ°¾®¿ôÅÀ±é»»¥æ¥Ë¥Ã¥È(FPv5)¤¬ÇÜÀºÅÙ¤Þ¤ÇÂбþ¤·¤Æ
¤¤¤Þ¤¹¡Ä¤¬¡¢STM32F7¤Ç¤ÏSTM32F4¤ÈƱ¤¸Ã±ÀºÅ٤ΤߤÎÂбþ¤È¤Ê¤ë¤½¤¦¤ÇF**K!
ȯɽ¤µ¤ì¤¿Åö½é¤Ï¥Ç¡¼¥¿¥·¡¼¥È¤è¤¯ÆÉ¤ß¹þ¤ó¤Ç¤ª¤é¤º¡¢¤Ä¤¤¤ËÇÜÀºÅÙ¤Ë
Âбþ¤«¡¼¡ª¤È»×¤¤¹þ¤ó¤Ç¤¿¤Î¤Ç¤Ì¤«´î¤Ó¤Ç¤·¤¿orz

¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤È¤·¤Æ¤ÏCortex-M4F¤ÈƱ¤¸ARMv7E-M¤È¤Ê¤ë¤Î¤Ç¥Ð¥¤¥Ê¥ê¤Ï
¸ß´¹½ÐÍè¤ë¤½¤¦¤Ç¤¹¡£STM32F4¤Ç¤ÏTCM¤Ç¤Ï¤Ê¤¯CCM¤¬¤¢¤ê¤Þ¤·¤¿¤¬¤½¤ì¤¬
ÇÛÃÖ¤µ¤ì¤Æ¤¤¤¿¥¢¥É¥ì¥¹¤ÏTCM¤È¤ÏÁ´¤¯°Û¤Ê¤ê¤Þ¤¹¤Î¤Ç¶Å¤Ã¤¿»È¤¤Êý¤µ¤ì¤Æ
¤¤¤ëÊý¤Ï·ë¶É¥ê¥ó¥«¥¹¥¯¥ê¥×¥È¤«¤éÁȤßľ¤·¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¤´Ãí°Õ¤¯¤À¤µ¤¤¡£
¤·¤«¤·¤Ê¤¬¤éCCM¤Ç¤Ï¤Ç¤­¤Ê¤«¤Ã¤¿DMAžÁ÷¤¬DTCM¤Ç¤Ï²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç
¤«¤Ê¤êÁÇľ¤Ë¥×¥í¥°¥é¥à¤òÁȤळ¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£


¤µ¤Æ¡¢È¯É½¤µ¤ì¤¿¤Ð¤Ã¤«¤Ç¾¦ÍѤϤȤ⤫¤¯GCC¥³¥ó¥Ñ¥¤¥é¤â¤³¤ì¤«¤éÂбþ³«»Ï¤È¤Ê¤ë
¤è¤¦¤Ç¤¹¤Î¤ÇSTM32F7¤ò¼ÂºÝ¤ËÆþ¼ê¤·¤ÆÍ·¤Ù¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤ÏȾǯ¤¯¤é¤¤Àè¤Ë
¤Ê¤ë¤«¤Ê¤È»×¤¤¤Þ¤¹¡£
STM32F2¤Î»þ¸«¤¿ESÉʤ¬Ãæ²Ú¤«¤éή¤ì¤Æ¤­¤Æ¤¯¤ì¤¿¤é¤â¤Ã¤ÈÁᤤ¤«¤â¡£
20141001ÄÉ¡§
Lauchpad¤ÎARM-GCC¤¬¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤Þ¤·¤¿¤¬¤Ê¤ó¤ÈCortex-M7¤ÎÂбþ¤¬
¥®¥ê¥®¥ê¤ÇÆÍ¤Ã¹þ¤Þ¤ì¤¿¤è¤¦¤Ç¤¹¡ª
STM32F7Âбþ¤Ë¤¹¤ë¾ì¹ç¤ÏSTM32F4¤«¤é¤Ï°Ê²¼¤Î¤è¤¦¤Ë¥ª¥×¥·¥ç¥ó¤òÊѤ¨¤ë¤³¤È¤Ë
¤è¤ê²Äǽ¤Ç¤¹¡£

STM32F4:
-mthumb -mcpu=cortex-m4 -march=armv7e-m -mtune=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16


STM32F7:
-mthumb -mcpu=cortex-m7 -march=armv7e-m -mtune=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-sp-d16


¤½¤·¤ÆCMSIS¤Î¥µ¥Ý¡¼¥È¤ÎÊý¤Ç¤¹¤¬¤³¤Á¤é¤ÎÊý¤Ïȯɽ¤ÈƱ»þ¤ËCMSIS¤â¥¢¥Ã¥×¥Ç¡¼¥È
¤·¤Æ¥Ø¥Ã¥À¥é¥¤¥Ö¥é¥ê¤â¤ä¤Ã¤È¤³3.30->4.00¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤â¤Á¤í¤óCortex-M7¥³¥¢¤Î¥Ø¥Ã¥À¤âÄɲäµ¤ì¤Æ¤ª¤ê¤Þ¤¹¡£¤è¤¦¤ä¤¯¥á¥¸¥ã¡¼¥Ê¥ó¥Ð¤Î
¹¹¿·¤Ë¤Ê¤ê¤Þ¤·¤¿¤¬»ä¤¬»î¤·¤¿¤È¤³¤í¤Ç¤ÏÁ´¤¯±Æ¶Á¤Ï¤Ê¤«¤Ã¤¿¤Î¤Ç¤½¤Î¤Þ¤Þº¹¤·Âؤ¨¤Æ
»ÈÍѤ¬²Äǽ¤«¤È»×¤¤¤Þ¤¹¡£
¤ª¤­¤Ñ¤Î¥×¥í¥°¥é¥à¤â10·îÅ٤ι¹¿·¤«¤é½ç¼¡V4.00ÈÇCMSIS¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ë
º¹¤·Âؤ¨¤Æ¹¹¿·¤·¤Æ¤¤¤­¤Þ¤¹¤Î¤Ç¤è¤í¤·¤¯¤ª¤Í¤¬¤¤¤·¤Þ¤¹¡£




¤ª¤Þ¤±

STM32F411RE-Nucleo¤¬²ÆÁ°¤Ë¼ê¤ËÆþ¤ê¤Þ¤·¤¿¡£STM32F411¥·¥ê¡¼¥º¤ÏF401¤Î
µ¡Ç½³ÈÄ¥ÈǤΰÌÃ֤Ť±¤Î¤è¤¦¤Ç¤¹¡£PCM1723»á¤¬Èó¾ï¤Ë¾Ü¤·¤¯¹Í»¡¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
PCM1723»á¤âCubeMX¤Î¥Ð¥°¤Ë¸ÀµÚ¤µ¤ì¤Æ¤Þ¤¹¤Í¡Ä
¤Ê¤ª¡¢¤ª¤­¤Ñ¤ÎF401-Nucleo¸þ¤±¤Î¥Ð¥¤¥Ê¥ê¤Ï¤½¤Î¤Þ¤ÞSTM32F411ÈǤǤâ
»ÈÍѲÄǽ¤Ç¤¹♥

OpenOCD¤ÏSTM32F411¥·¥ê¡¼¥º¤Ï̤Âбþ¤À¤Ã¤¿¤Î¤ÇÂбþ¤µ¤»¤Æ¤ª¤ê¤Þ¤¹¡£
ËÜÍè¤ÏOpenOCD¾®¥Í¥¿¹Ô¤­¤Î°Æ·ï¤Ç¤¹¤¬¾®¥Í¥¿²á¤®¤ÆºÜ¤»¤é¤ì¤Ê¤«¤Ã¤¿¤Î¤Ç
¤³¤Á¤é¤Ç¹ðÃΤµ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£
¼¡²ó¤ÏÂçʪ¤Î¹¹¿·¤¬¹µ¤¨¤Æ¤¤¤Þ¤¹¤Î¤Ç¤´´üÂÔ²¼¤µ¤¤♥
¤ª¤­¤Ñ¤Ë¤¢¤ëWindowsÍѥХ¤¥Ê¥ê¤â¤¹¤Ç¤ËÂбþºÑ¤Ç¤¹¤Î¤Ç¤´ÍøÍѤ¯¤À¤µ¤¤¡£

¤ª¤Þ¤±¤Î¤ª¤Þ¤±

¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¤¢¡ª¡ª
RTCÍѤΥÁ¥Ã¥×¥³¥ó¥Ç¥ó¥µ¤Ï°ÌÃÖŪ¤Ëʪ¤¬Åö¤¿¤ê°×¤¤°ÌÃ֤ˤ¢¤Ã¤Æ¤¹¤°·ç¤±¤ëorz

2.5¸µ¤À¤Ã¤¿¤Ï¤º¤¬¤¤¤Ä¤Î´Ö¤Ë¤«5¸µ¤ËÃ;夲¤·¤¿¤«¤È»×¤Ã¤¿¤é¤µ¤é¤Ë8¸µ¤Ë¤Ê¤ê»ÅÉñ¤ËÆüËܤÇ300±ß¤ÇÇä¤é¤ì¤Æ¤¤¤ëi2c±Õ¾½¤òư¤«¤¹


Ìó2ǯÁ°¡¢¤Í¤à¤¤¤µ¤ó¤Ïtaobao¤Ç¥Ô¥óÇÛÃְʳ°¾ÜºÙÉÔÌÀ¤Îi2c±Õ¾½¤òĶÇ˳ÊÃͤÎ
2.5¸µ¤Ç¹ØÆþ¤·¤Æ¤ª¤ê¤Þ¤·¤¿
¡£¤½¤Î¸å¤Ê¤¼¤«µÞ¤Ë8¸µ¤ËÃ;夲¤·¤ä¤¬¤Ã¤Æ¤ª¤ê¤Þ¤·¤¿¤¬
»ä¤ÏÇ˳ʤ«¤Äͱ߹â¤À¤Ã¤¿¤Î¤ò³èÍѤ·¤Æ30¸Ä¤¯¤é¤¤¥¬¥á¤Æ°ÊÍèËØ¤Éưºî¤µ¤»¤º
¤½¤Î¤Þ¤Þ¤ÇÊüÃÖ¡£

¤¬¡¢

2014ǯ¤Î½Õ¡¢aitendo¤µ¤ó¤â¤³¤Î±Õ¾½¤ËÁ²¤¯Ìܤò¤Ä¤±¤¿¤è¤¦¤Ç°ì¤ÄÅö¤¿¤ê
300±ß¤ÇÈÎÇ䤷¤Æ¤¤¤Þ¤¹¡£
¤µ¤¹¤¬ÂçΦŹ¡¢°¤Áæ¤Ã¥¹¤Í
¤³¤Î¤Þ¤ÞÉå¤é¤»¤ë¤Î¤â¤Ê¤ó¤Ê¤Î¤Ç狼¤¬¤³¤ì¤ò»È¤Ã¤ÆÌÌÇò¤¤Êª¤òºî¤Ã¤Æ¤â¤é¤¨¤ë
¤è¤¦¤Ë¤È¤Î´ê¤¤¤ò¹þ¤á¤Æ¹þ¤á¤Æ»ä¤ÎÅö»þ¤Î²òÀÏ·ë²Ì¤ò¸ø³«¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£




¡ü¤³¤ì¤Ï¤Ê¤ó¤À

¤³¤ì¤Ïº£¤È¤Ê¤Ã¤Æ¤Ï¤´¤¯°ìÈÌŪ¤Ê¥É¥Ã¥È¥Þ¥È¥ê¥¯¥¹·Á¼°¤Î¥â¥Î¥¯¥í±Õ¾½¤Ç¤¹¡£
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÏI2C¤Î¤ß¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥×¥éÀ½¤Î³°ÏȤÏLED¤ò¤Ä¤±¤ë¤¯¤Ü¤ß¤Î¤è¤¦¤Ê°ÕÌ£¿¼¤Ê¤â¤Î¤â¸«¼õ¤±¤é¤ì¤Þ¤¹¤¬
¤¢¤Þ¤êµ¤¤Ë¤·¤Æ¤Þ¤»¤ó¡£

¡ü¤À¤«¤é¤³¤ì¤Ï¤Ê¤ó¤À

¤Ê¤ó¤Ê¤ó¤Ç¤·¤ç¤¦¤Í¤³¤ì¡ÄÇ´Ã奯¡¼¥×Åù¤Ç¤Ù¤Ã¤¿¤ê¤Ä¤±¤é¤ì¤Æ¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç
´Êñ¤Ë¼è¤êµî¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ãæ²Ú±Õ¾½¤ÏÆæ¤¬Â¿¤¤¤Ç¤¹¡£


¡ü¥Þ¥¤¥³¥ó¤È¤É¤¦¤Ä¤Ê¤²¤ì¤Ð¤¤¤¤¤Î¤«¡©

¥Ç¡¼¥¿¥·¡¼¥È¤ËÄ󼨤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¥Ô¥óÇÛÃ֤ΤߡĤۤó¤Ã¤È¤³¤ì¤À¤±¤Ç¤¹¡£
¤·¤«¤·¤½¤Î¾ðÊó¤À¤±¤Ç¤â½½Ê¬²òÀϤ¬²Äǽ¤Ç¤¹¡£


¤³¤³¤Ç´×ÏõÙÂê¡¢I2C¤È¤¤¤¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡Ä
¤Ò¤È¤Þ¤º¡¢I2C¤Îµ¬³Ê¤ÏNxP¤Î¥µ¥¤¥È¤ËPDF¤Ë¤Æ¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¤·¤Ã¤«¤ê³Îǧ¤·
¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£¸å½Ò¤·¤Þ¤¹¤¬ºÇ½é¤ÏGPIO¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤ÎÊý¤¬Æ°ºî¤ÎÇİ®¤¬
¤·¤ä¤¹¤¤¤«¤È»×¤¤¤Þ¤¹¡£¤¤¤º¤ì¤Îưºî¤Ë¤ª¤¤¤Æ¤â¥ª¡¼¥×¥ó¥É¥ì¥¤¥ó¤Çưºî¤µ¤»¤ë¤Î¤Ï
ÊѤï¤é¤Ê¤¤¤¿¤á¡¢SDA,SDL¤Î³Æ¿®¹æÀþ¤Ë¤Ï¥×¥ë¥¢¥Ã¥×Äñ¹³¤ÏÀäÂФËɬÍפǤ¹¡£

¥×¥ë¥¢¥Ã¥×Äñ¹³»»½Ð¼°¤Ï¡¡Rp(kohm)>(Vdd-0.4)/3(mA)¡¡
¤Ê¤Î¤Ç°ìÈÌŪ¤Ê+3.3V·Ï¤Ç¤Ï
Rp > (3.3-0.4)/3 = 0.967(kohm)¤È¤Ê¤ê¤Þ¤¹¤¬¡¢
100pF¤ÎÍÆÎ̤Ç400kBpsÄÌ¿®»þ¤Î½êÍ×Ω¤Á¾å¤¬¤ê»þ´Ö300nSec¤ò¹Íθ¤¹¤ë¤È
Rp < 300(nSec)/100(pF) = 3(kohm)

·×»»¾å¤Ï0.967kohm~3kohm¤¬Å¬ÀÚ¤ÊÄñ¹³ÃͤʤϤº¤Ç¤¹¤¬¡¢1kohmÉÕ¶á¤Ç¤Ï
¥É¥é¥¤¥ÖǽÎϤ¬Ä㤤F**K¤ÊI2C±Õ¾½¤À¤ÈACK¤¬Low¤Ë°ú¤¤¤Æ¤¯¤ì¤Ê¤¤¤³¤È¤¬
¤¢¤ë¤Î¤Ç·ë¶É¼Â¬(¥ª¥·¥í¥¹¥³¡¼¥×¤ÎÇÈ·Á)¤ò¸µ¤Ë°ÂÁ´Ãͤòµá¤á¤ë±©ÌܤË
¤Ê¤ê¤Þ¤¹¡Ä¤á¤É¤¤
Bolymin¤Î¥­¥ã¥é¥¯¥¿I2C±Õ¾½¤òư¤«¤·¤¿ºÝ¤Î¼Â¬¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

(MAX400kbpsÄÌ¿®»þ)
¡¡¡¡1kohm ¡ß
¡¡¡¡1.5kohm ¡û
¡¡¡¡2.2kohm ¡û
¡¡¡¡2.7kohm ¡û
¡¡¡¡3.3kohm ¡û

¤È¤¤¤¦¤ï¤±¤Ç400kBps¤ÇI2C¥Ç¥Ð¥¤¥¹¤òưºî¤µ¤»¤ëºÝ¤Ï¥×¥ë¥¢¥Ã¥×Äñ¹³¤Ï
2.7kohm¤¬ºÇ¤âŬ¤·¤Æ¤¤¤ë¤«¤È»×¤ï¤ì¤Þ¤¹¡£

¤Ç¤¹¤¬Â®ÅÙŪ¤ËÄÙ¤·¤Î¸ú¤¯100kbps¤Þ¤ÇÍî¤È¤¹¤Ê¤é4.7kohm¤ÇÄߤäȤ±¤ÐÂçÄñ¤Ï
ÌäÂê¤Ï¤¢¤ê¤Þ¤»¤ó¡£¡Ä¤Æ¸À¤¦¤ï¤±¤Çº£²ó¤â4.7kohm¤Ç¹Ô¤­¤Þ¤¹¡£



À褺¤Ï±Õ¾½¤È°Õ¼±¤»¤º°ì¤Ä¤ÎI2C¥Ç¥Ð¥¤¥¹¤È»×¤¤¹þ¤ó¤ÇI2C¤ÎACK¤¬Ê֤äƤ¯¤ë
¥¢¥É¥ì¥¹¤ò¥µ¡¼¥Á¤·¤Æ¤ä¤ê¤Þ¤·¤ç¤¦¡£¤Û¤È¤ó¤É¤Î¥Ç¥Ð¥¤¥¹¤Ï8bitÊÑ¿ô¤Ç¼¨¤µ¤ì¤ë
ÈÏ°ÏÆâ¤Ê¤Î¤ÇÁܺ÷¿ô¤â¾¯¤Ê¤¯¤½¤ó¤Ê»þ´Ö¤¬¤«¤«¤ê¤Þ¤»¤ó¡£
¤Ç¡¢¥Ò¥Ã¥È¤·¤¿¥¢¥É¥ì¥¹¤Ï0111_101x¤È0111_100x¤Ç¤·¤¿¡£¥Ò¥Ã¥È¤·¤¿
¥¢¥É¥ì¥¹¤ò¸µ¤Ë¤¤¤í¤¤¤í¥°¥°¤Ã¤Æ¤ß¤ë¤ÈI2C¤Ç64x96¤Î¥É¥Ã¥È¥Þ¥È¥ê¥¯¥¹¤Ë
Ŭ¹ç¤·¤¿¥É¥é¥¤¥ÐIC¤ÏUC1602S¤¬ºÇ¤â¶á¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤È¿ä¬¤·¤Þ¤·¤¿¡£
¥Ç¡¼¥¿¥·¡¼¥È¤ò¸«¤ë¤È¥Ç¡¼¥¿¤È¥³¥Þ¥ó¥É¤Î¥ì¥¸¥¹¥¿¤¬¾åµ­¥¢¥É¥ì¥¹¤Î¤È¤ª¤ê
Æó¤Ä¤Ëʬ¤«¤ì¤Æ¤ª¤ê¿ä¬¤¬Àµ¤·¤«¤Ã¤¿¤Èʬ¤«¤ê¤Þ¤¹¡£


¤³¤³¤Ç²þ¤á¤Æ¤³¤ÎI2C±Õ¾½¡¢"GG0906186FWNNC"¤òư¤«¤·¤»¤·¤á¤ë¤¿¤á¤Î
½àÈ÷¤ò¹Ô¤¤¤Þ¤¹¡£¥É¥Ã¥È¥Þ¥È¥ê¥¯¥¹±Õ¾½¤Ëɬ¿Ü¤Î¥Ð¥¤¥¢¥¹Å۵¤òºî¤ê½Ð¤¹
¤¿¤á¤ÎÅ۵¥É¥é¥¤¥Ð¤âUC1602S¤Ë¤ÏÆþ¤Ã¤Æ¤¤¤ë¤Î¤Ç¸å¤Ï¥Ç¡¼¥¿¥·¡¼¥È¤ò»²¹Í¤Ë
VLCDÍѤΥ­¥ã¥Ñ¥·¥¿¤ò³°ÉÕ¤±¤·¤Æ¤ä¤ì¤Ð¤ª¤·¤Þ¤¤¤Ç¤¹¡£
¶ñÂÎŪ¤Ë¤Ï¾åµ­²óÏ©¿Þ¤ÎÍ×ÎΤÇVLCD¤Ë0.33uF¤Ö¤é²¼¤²¤ì¤Ð¤è¤¤¤Ç¤¹¡£



¡üư¤«¤¹¡ª




»ÈÍѤ¹¤ë¥Þ¥¤¥³¥ó/´ðÈĤϺ£Î®¹Ô¤ê¤ÎSTM32-Nucleo¥Ü¡¼¥É¤ò»ÈÍѤ·¤Þ¤¹¡£
½é¤á¤ÆÆ°ºî¤µ¤»¤ëºÝ¤ÏÄ㮤Ǥ¹¤¬¥Ç¥Ð¥Ã¥°¤¬¤·¤ä¤¹¤¤GPIO¤Ë¤è¤ëI2C¥Ð¥¹¤Î
¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó(¥½¥Õ¥ÈI2C)¤¬Îɤ¤¤Ç¤¹¡£¾å¤Ç¤âÃí°Õ¤·¤Þ¤·¤¿¤¬À©¸æ¤Ï
¤¹¤Ù¤ÆOD¤Ç¤¹¡ª¤¢¤È΢¥ï¥¶¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢STM32¤Î¾ì¹ç¤ÏGPIO¤ò½ÐÎϤË
ÀßÄê¤ò¤·¤Æ¤¤¤Æ¤âOD¤ÇÀ©¸æ¤·¤ÆREAD¤ÎºÝ¤Ï¥Ý¡¼¥È¤òHI(=µ¿»÷¥È¥é¥¤¥¹¥Æ¡¼¥È)
¤Ë¤·¤Æ¤ª¤±¤Ð¥¿¡¼¥²¥Ã¥È¥Ç¥Ð¥¤¥¹¤«¤éÅǤ«¤ì¤ë¿®¹æ¥ì¥Ù¥ë¤¬¤ï¤«¤ê¤Þ¤¹¤Î¤Ç
Æþ½ÐÎϤòÀÚ¤êÂØ¤¨¤ë¼ê´Ö¤¬¾Ê¤±¤Æ¥ª¥È¥¯¤Ç¤¹¡ú



¡Ä¤Æ¤¤¤¦¤«¥Ï¡¼¥É¥¦¥¨¥¢I2CÀ©¸æÈǤΤۤ¦¤ÏF1/F4·Ï¤ÈÁ´¤¯°ã¤Ã¤Æ¤ÆÆ°¤«¤·Êý¤ò¸«¤Ä¤±
¤Æ¤ëºÇÃæ¤Ê¤Î¤Çº£¤·¤Ð¤é¤¯¤ªÂÔ¤Á¤¯¤À¤µ¤¤¡£

20230822ÄÉ:
2023ǯ¸½ºß¤Ï¥Ï¡¼¥É¥¦¥¨¥¢I2C¤Ç¤â¥Ð¥ê¥Ð¥ê°ÂÄêÆ°ºî¤·¤Æ¤Þ¤¹¡ª¡ª¡ª¡ª



UC1602S¤Î¥¤¥Ë¥·¥ã¥é¥¤¥º¤Î¤¿¤á¤Î¼öʸ¤â¤Í¤à¤¤¤µ¤ó¤¬´û¤ËÄ´ºººÑ¤Ç¤¹¤Î¤Ç
¤´°Â¿´¤¯¤À¤µ¤¤¡£¤´Í÷¤ÎÄ̤ê¤Ë̵»öɽ¼¨¤¬½ÐÍè¤Þ¤·¤¿¡£
TFT-LCD¤Ç»ÈÍѤ·¤¿FONTX2¥É¥é¥¤¥Ð¤ò»ÈÍѤ·¤Æ¤ª¤ê¤Þ¤¹¡£


¤³¤ì¤À¤±¤Ç¤Ï»È¤¤¤É¤³¤í¤¬Ê¬¤«¤ê¤Å¤é¤¤¤Î¤ÇƱ¤¸I2CÀܳ¥Ç¥¸¥¿¥ë²¹ÅÙ·×STTS751¤ò
¤Ä¤Ê¤²¤Æ´Ê°×¤Î²¹Åٷפò޻ޏ¤Ã¤ÈºîÀ®¤·¤Æ¤ß¤Þ¤·¤¿¡£


ÆÃ¤Ë´í¤Ê¤²¤Ê¤¯²¹ÅÙ¤òɽ¼¨¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤·¤¿♥
¤ä¤Ã¤±¤ÄÇÛÀþ¤Ç¤¹¤¬¤³¤¦¤¤¤¦½ÐÍè¹ç¤¤¥Ü¡¼¥É¤ÏËÜÅö¤ËÊØÍø¤Ç¤¹¤Í¡Á



º£²ó¤ÎF0ÈÇNucleo¸þ¤±¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¤ª¤­¤Ñ¤ËÃÖ¤¤¤Æ¤ª¤­¤Þ¤¹¡£°µ½Ì¥Õ¥¡¥¤¥ëÆâ
¤Îlib¥Õ¥©¥ë¥À¤ËxMSTN¤È¤¤¤¦¥Õ¥©¥ë¥À¤¬¤¢¤ê¡¢¥É¥Ã¥È¥Þ¥È¥ê¥¯¥¹±Õ¾½¤ÎÀ©¸æ¤Î¤¿¤á¤Î
¥³¡¼¥É¤¬½¸Ã椷¤Æ¤¤¤Þ¤¹¡£
º£²óÀ©¸æ¤·¤¿UC1602S¤ÏxMSTN/drivers¥Õ¥©¥ë¥À¤Ëuc1602.c¤È¤·¤ÆÃê¾Ý²½¤·¤Æ
¤¢¤ê¤Þ¤¹¤Î¤ÇÊ̤Υޥ¤¥³¥ó¤ämbed¤Ë°Ü¿¢¤µ¤ì¤ëÊý¤Ï¤´»²¹Í¤Ë¡£°Ü¿¢¤ÏÍÆ°×¤Ë
¤Ç¤­¤ë¤Ï¤º¤Ç¤¹¡£

¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏSTTS751¤ÎÀ©¸æ¤ÏIFʸ¤ÇÀڤäƤ¤¤Þ¤¹¤Î¤ÇSTTS751¤ò
¤ª»ý¤Á¤Ç¤Ê¤¤Êý¤âaitendo¤µ¤ó¤«¤é¹ØÆþ¤·¤¿i2c±Õ¾½Ã±ÂÎ¤Ç¤âÆ°ºî³Îǧ¤¬
²Äǽ¤Ç¤¹¡£¤³¤Î±Õ¾½¤ÏưºîÅÅή¤¬¤«¤Ê¤ê¾®¤µ¤¯¡¢Äã¾ÃÈñÅÅÎϤʹ©ºî¤Ë¤â
¤«¤Ê¤ê»È¤¨¤ë¥¢¥¤¥Æ¥à¤È¤Ê¤ë¤Ç¤·¤ç¤¦¡£

I2C¥Í¥¿¤Ï½ñ¤­¤¿¤¤¤³¤È¤¬Âô»³Í­¤ê¤¹¤®¤Æ¤Þ¤È¤Þ¤ê¤¬¤Ä¤«¤Ê¤¤¾õÂ֤Ǥ¹¡£
ÆÃ¤Ë²ø¤·¤¤Ãæ²ÚÀ½I2C¥­¥ã¥é¥¯¥¿±Õ¾½¤ÎÅŸ»ÅêÆþ»þ¤ÎÊÑ¤ÊÆ°ºî¤È¤«²óÈò¤Î
¤¿¤á¤Î¥Ð¥¹¥ê¥«¥Ð¥ê¤È¤«¥­¥ê¤¬¤Ê¤¤¤Ç¤¹¡£¤Ç¤¹¤¬º£²ó¤ß¤¿¤¤¤Ê¤Ò¤ç¤ó¤Ê¤³¤È¤ò
¥Á¥ã¥ó¥¹¤Ë¤·¤Æ¸ø³«¤·¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

STM32F4¥·¥ê¡¼¥º¤ò»È¤Ã¤Æ¤ß¤ë11 - STM32F429I-DiscoveryȯưÊÔ -

¤§¡¼¡ÄÁ°²ó¤ÎSTM32¤Îµ­»ö¤ÎºÇ¸å¤Ç¿·¤·¤¤¥³¡¼¥É¥¹¥Ë¥Ú¥Ã¥È¤È¾Î¤¹¤ë¤É¤³¤È¤Ê¤¯
ÈÜàФÊ̾¾Î¤Î¤Õ¤ì¤³¤ß¤Çȯɽ¤µ¤ì¤¿STM32CubeMX¤È¤½¤ÎF4¥·¥ê¡¼¥º¤Î¥µ¥Ý¡¼¥È¤ò
¹Ô¤¦CubeF4¤È¤¤¤¦¿·¤¿¤Ê¥Õ¥¡¡¼¥à¥¦¥¨¥¢¥é¥¤¥Ö¥é¥ê¤Ë¿¨¤ì¤Þ¤·¤¿¤¬¡Ä
»ä¤â°Ü¿¢¤òÌܻؤ·¤Æ´èÄ¥¤Ã¤Æ¤¿¤Î¤Ç¤¹¤¬¡Ä

»ä¤Î½¾Íè¤Î¤¤¤Ä¤â¤Î¤ËÅö¤Æ¤Ï¤á¤è¤¦¤È»×¤¦¤È²þ¤¸Ä½ê¤¬Â¿´ô¤ËµÚ¤Ó¡¢¤µ¤é¤Ë¥³¡¼¥É
¥µ¥¤¥º¤È¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤âÁý²Ã¤·¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç°Ü¿¢¤Ï¸«Á÷¤ê¤Ë¤·¤Æ¿·µ¬¤Ëºî¤ë
¥×¥í¥¸¥§¥¯¥È¤«¤éCubeF4¤ò»ÈÍѤ¹¤ëÊý¿Ë¤Ëƨ¤²ÊѤ¨¤Þ¤·¤¿¡£

STM32CubeF4¤Ë¤ÏÃê¾Ý²½¤¬¤µ¤é¿Ê¤á¤é¤ì¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤È¤¤¤¦³µÇ°¤¬Äɲ䵤ì
¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤¬¤«¤Ê¤ê¤Î¶Ê¼Ô¤Ç½¾Íè¤ÎF4¥·¥ê¡¼¥º¤Ç¸À¤¦DSP_StdPeriph_Driver
¥é¥¤¥Ö¥é¥ê¤ËÁêÅö¤¹¤ë"STM32F4xx_HAL_Driver"¤Ï¤¹¤Ù¤Æ¤³¤ì¤Î
»ÈÍѤòÁ°Äó¤È¤·¤Æ¤¤¤Æ¤µ¤é¤Ë¥µ¥¤¥º¤¬Â礭¤¤¹½Â¤ÂΤÈÊ»ÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
¤Î¤¬Ê¬¤«¤ê¤Þ¤·¤¿¡£
¤³¤ìSRAM¤äFLASH¤Î¥ê¥½¡¼¥¹¤¬ËÄÂç¤Ë¤¢¤ëF4¥·¥ê¡¼¥º¤À¤«¤é¤è¤¤¤â¤Î¤òF1¤äF0
¤Ë¤âÅö¤Æ¤Ï¤á¤ë¤Î¤Ï¤«¤Ê¤ê¥ä¥Ð¤¤¤È»×¤¤¤Þ¤¹¡£
»ä¤â²áÅÙ¤ÎÃê¾Ý²½¤ÏÎɤ¤¤È¤Ï»×¤Ã¤Æ¤¤¤Þ¤»¤ó¡£°Ü¿¢À­¤ò½Å»ë¤·¤¹¤®¤Æ¤»¤Ã¤«¤¯¤Î
¥Þ¥¤¥³¥ó¤ÎÀ­Ç½¤ò°ú¤­½Ð¤»¤Ê¤¤¤Î¤Ç¤¢¤ì¤ÐËÜËöžÅݤǤ¹¡£

¤¢¤ó¤Þ¤·¹Í¤¨¤¿¤¯¤Ê¤¤¤Î¤Ç¤¹¤¬ÌµÍý¤¯¤½Á´CPU¤Î³Êº¹¤òËä¤á¤ë¤Ù¤¯Ãê¾Ý²½¤ò
Ìܻؤ·¡¢¤½¤·¤Æ¼ºÇÔ¤·¤Æ·ë¶É¥é¥¤¥Ö¥é¥ê¤Î¥Ð¡¼¥¸¥ç¥ó¤¬Â¿´ô¤Ëʬ¤«¤ì¤Æ
¤·¤Þ¤Ã¤¿LPCOpen¤ÈƱ¤¸Æ»¤òÊâ¤ó¤Ç¤¤¤ë´¶¤¸¤¬¤·¤Þ¤¹¡£
¤ª¤½¤é¤¯Cube·Ï¤Î¥é¥¤¥Ö¥é¥ê¤ËÁ«°Ü¤·¤Æ¤¤¤¯¤¢¤¿¤Ã¤ÆÂ纮Í𤬵¯¤³¤ë¤È
»×¤¤¤Þ¤¹¤Í¡£ÌµÍý¤ËCube¤Ø¤ÎÁ«°Ü¤òÀú¤ëÃæÅÓȾü¤Ëȯ¸ÀÎϤ¬»ý¤Ã¤Æ¤ë¿Í¤¬
ͯ¤¯¤Î¤ÏÍÆ°×¤Ëͽ¬¤µ¤ì¤Þ¤¹¡£³ØÀ¸¤µ¤ó¤Ê¤ó¤«¤Ï¼«Ê¬¤Î¥Ü¥¹¤Î"¤»¤ó¤»¤¤"
¤Ë¤Þ¤¿Cube¥é¥¤¥Ö¥é¥ê¤Î»È¤¤Êý¤òwiki¤Ë¤Þ¤È¤á¤µ¤»¤é¤ì¤ë¤È»×¤¤¤Þ¤¹¡£
¤½¤¦¤¤¤¦¤³¤È¸À¤Ã¤Æ¤¯¤ë¿Í¤é¤Ë¤Ï"¤³¤ó¤Ê¤³¤È¤·¤Æ¤ë¤³¤È¼«ÂΤ¬»þ´Ö¤Î̵ÂÌ¡£
¤·¤¿¤±¤ê¤ã¼«Ê¬¤Ç¤ä¤ì¡ª"¤È¤Ï¤Ã¤­¤êNO¤òÆÍ¤­ÉÕ¤±¤ë¤Ù¤­¤Ç¤¹¡£
¤È¤Ï¤¤¤¨»ä¤Î¤Ö¤í¤°¤ò¸«¤é¤ì¤Æ¤¤¤ëÊý¤Ï»ä¤è¤ê¤âµ»½ÑÎϤ¬¤Ï¤ë¤«¤Ë¾å¤ÎÊý
¤Ð¤Ã¤«¤Ê¤Î¤Ç¤½¤â¤½¤â¤³¤ó¤Ê¤È¤³¸«¤Æ¤Ê¤¤»ä¤¬Ãí°Õ¤·¤Ê¤¯¤Æ¤â³Æ¼«¤·¤Ã¤«¤ê
Âнè½ÐÍ褹¤ë¤³¤È¤¬¤Ç¤­¤ë¤Ç¤·¤ç¤¦¤«¤é¤°¤À¤°¤À¸À¤¤¤Þ¤·¤¿¤¬¤ä¤Ã¤Ñ¤·
»ä¤Î۹ͫ¤«¤Ê¡Á¤È»×¤¤¤Þ¤¹¡£




¤µ¤Æ¡¢Á°ÃÖ¤­¤¬Ä¹¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬°ÊÁ°¤«¤é¿¨¤ì¤Æ¤­¤¿
STM32F429I-Discovery¤ÎTFT-LCD¤òSPI¤Ç¤Ï¤Ê¤¯RGB¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç
ư¤«¤¹¤³¤È¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£
Á°²ó¤ÏÄ㮤ÊSPI¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤ªÃã¤òÂù¤·¤Æ¤¤¤Þ¤·¤¿¡£
¤·¤«¤·STM32F429¥·¥ê¡¼¥º¤ËTFT-LCD¤ËÆÃ²½¤·¤¿¥°¥é¥Õ¥£¥Ã¥¯¥³¥ó¥È
¥í¡¼¥é(LTDC)¤È¥°¥é¥Õ¥£¥Ã¥¯¤ËÆÃ²½¤·¤¿DMA¤Ç¤¢¤ë(Chrom-ART Accelerator)
¤¬ÅëºÜ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤³¤ì¤é¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤¤¤Ä¤â¤Î¤ÎºÆ¸½¤òÌܻؤ·
¤è¤¦¤ä¤¯´°À®¤·¤¿¤ï¤±¤Ç¤¹¡£

¡üSTM32F429I¤Ë¤¢¤ë¥°¥é¥Õ¥£¥Ã¥¯µ¡Ç½
»ä¤¬ÀâÌÀ¤¹¤ë¤è¤ê¤â¤³¤Á¤é¤ÎPDF¤ò¸«¤¿¤é°ìÌÜÎÆÁ³¤Ç¤¹¡£
LTDC¤Ë´Ø¤·¤Æ¤Ï¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ³ÎÊݤ·¤¿¥á¥â¥ê¥¢¥É¥ì¥¹¤ËRGB¤Î
¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤à¤À¤±¤Ç¿§¤Îɽ¼¨¤¬²Äǽ¤Ç¤¹¡£¤Þ¤¿¡¢STM32F429·Ï¤Ç¤Ï
SDRAM¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤Î¤ÇÍÆÎ̤ò¶ô¤¦²èÁü¥Ç¡¼¥¿¤Ç¤â;͵¤Ç
¼è¤ê°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

Chrom-ART Accelerator¤Ë´Ø¤·¤Æ¤ÏÊÌ̾DMA2D¤È¾Î¤µ¤ì¤Æ¤¤¤ÆÊ¸»úÄ̤ê
2D¥°¥é¥Õ¥£¥Ã¥¯ÆÃ²½·¿DMA¤Ç¤¹¡£¤·¤«¤â¥Ç¡¼¥¿·Á¼°¤òÊÑ´¹¤·¤Æ¥á¥â¥ê´Ö
žÁ÷¤·¤¿¤êñ°ì¥Ç¡¼¥¿¤ò»ØÄꤷ¤ÆÅ¾Á÷¤¹¤ë(¥ì¥¯¥¿¥ó¥°¥ë¥Õ¥£¥ë¤Ë¸ú²Ì¤ò
ȯ´ø)¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

STM32F429I-Discovery¤Ç¤Ï¾åµ­Æó¤Ä¤Îµ¡Ç½¤òÂθ³²Äǽ¤Ç¤¹¡£Æ±¥Ü¡¼¥É¤Ë
ÅëºÜ¤µ¤ì¤¿TFTLCD¤Î²òÁüÅ٤Ϲ©ºîʪ¤Ç¤Ï¥á¥¸¥ã¡¼¤Ê240x320¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
STM32¤ÎLTDCñÂΤǤϥ쥯¥¿¥ó¥°¥ë¤ò»ØÄꤷ¤Æ½ñ¤­¹þ¤ß»þ¤Ë¥¢¥É¥ì¥¹¤ò
¼«Æ°¥¤¥ó¥¯¥ê¥á¥ó¥È¤·¤Ê¤¬¤éϢ³¤Ç½ñ¤­¹þ¤á¤ëµ¡Ç½¤Ï¤Ê¤¤(DMA2D¤Ç
²òÀ⤷¤Þ¤¹)¤¿¤á¥¢¥É¥ì¥¹·×»»¤Ïɬ¿Ü¤Ç¤¹¡£

¶ñÂÎŪ¤Ë¤¤¤¦¤È¤¿¤È¤¨¤ÐºÂɸx,y¤Ë¥É¥Ã¥È¤òÂǤÁ¤¿¤¤¾ì¹ç¤Ï´ðËÜŪ¤Ë¤ÏÀ褺
°Ê²¼¤Î¤è¤¦¤ËºÂɸ¤ò»ØÄꤷ¤Þ¤¹
(RGB=565,1¥É¥Ã¥È¤¢¤¿¤ê2Byte¤Î¥Ç¡¼¥¿¤òÁÛÄê)¡£


lcd_c_buf_ptr = lcd_f_buf_ptr + 2*(x + (MAX_X*y));

lcd_c_buf_ptr :¥É¥Ã¥È¥Ç¡¼¥¿¤ò¼ÂºÝ¤Ë½ñ¤­¹þ¤à¥á¥â¥ê¤Î¥¢¥É¥ì¥¹
lcd_f_buf_ptr :¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ³ÎÊݤ·¤¿¥á¥â¥êÎΰè¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹
MAX_X :TFT-LCD¤ÎX¼´¤ÎºÇÂç¥É¥Ã¥È¿ô(F429I-Discovery¤Ç¤Ï240¤ÈÄêµÁ)


¼¡¤ËRGB¥Ç¡¼¥¿colour¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£

*(volatile uint16_t*)(lcd_c_buf_ptr) = colour;
lcd_c_buf_ptr +=2;

¤è¤ê¶ñÂÎŪ¤Ê¼ÂÁõ¤Ï¤¤¤Ä¤â¤Î¤Î./lib/display/mcu_depend/src/lcdc_if_basis.c¤ò
¤´Í÷²¼¤µ¤¤¡£FONTX2Åù¤ÎÉÁ²è¥ë¡¼¥Á¥ó¤Ï´°Á´¤Ë¥É¥Ã¥Èñ°Ì¤Ç¹Ô¤Ã¤Æ¤¤¤Þ¤¹¤¬
MCU¥Ð¥¹¤È³°ÉôLCD¥³¥ó¥È¥í¡¼¥é¤È¤ÎÄÌ¿®¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤¬¤Ê¤¯¤Ê¤ë¤Î¤Ç
¥É¥Ã¥Èñ°Ì¤Ç¤â½½Ê¬¤ËÁ᤯¤Ê¤ê¤Þ¤¹¡£¤Þ¤¿¡¢LTDC¤Ï2Ëç¤Î¥ì¥¤¥ä¡¼¤ò»ÈÍѲÄǽ¤Ç
¤µ¤é¤Ë¥¢¥ë¥Õ¥¡¥Ö¥ì¥ó¥Ç¥£¥ó¥°¤ÎÆ©²á¸ú²Ì¤â»ÈÍѲÄǽ¤Ç¤¹¡£¸½¾õ¤Ç¤Ïñ°ì¤Î
¥ì¥¤¥ä¤È¤·¤Æ¤·¤«»ÈÍѤ·¤Æ¤¤¤Þ¤»¤ó¤¬¤³¤Á¤é¤â³Ø½¬¤ò½Å¤Í¤Æ¥â¥Î¤Ë¤·¤Æ¤¤¤­¤Þ¤¹¡ª


¼¡¤Ë¤â¤¦°ì¤Ä¤ÎÌ̵ܶ¡Ç½Chrom-ART Accelerator(°Ê²¼DMA2D)¤Ç¤¹¡£
»ä¤Î¤¤¤Ä¤â¤Î¤Ç¤ÏFillRect·Ï¤Î¥ì¥¯¥¿¥ó¥°¥ë»ØÄêÅɤê¤Ä¤Ö¤·¤ä¥ì¥¯¥¿¥ó¥°¥ë
»ØÄê¤Îư²è¥Ç¡¼¥¿Å¾Á÷¤Ë»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

´ðËÜŪ¤Ë¤ÏÄ̾ï¤ÎDMA¤ÈƱ¤¸¤Ç¤¹¤¬¥°¥é¥Õ¥£¥Ã¥¯ÆÃ²½¤Ê¤Î¤ÇRGB¥Ç¡¼¥¿¤ò
³ÊǼ¤¹¤ë¥ì¥¸¥¹¥¿¤â¤¢¤ê¤Þ¤¹¡£Ã±°ì¿§ÉÁ²è¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤ËÀßÄꤷ¤Þ¤¹¡£
¢¨RGB565,¹õ¿§,Á´²èÌÌ(240x320)Åɤê¤Ä¤Ö¤·¤Î¾ì¹ç

/* configure DMA2D */
DMA2D_DeInit();
DMA2D_InitStruct.DMA2D_Mode = DMA2D_R2M;
DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565;
DMA2D_InitStruct.DMA2D_OutputGreen = (0x07E0 & COL_BLACK) >> 5;
DMA2D_InitStruct.DMA2D_OutputBlue = 0x001F & COL_BLACK;
DMA2D_InitStruct.DMA2D_OutputRed = (0xF800 & COL_BLACK) >> 11;
DMA2D_InitStruct.DMA2D_OutputAlpha = 0x0F;
DMA2D_InitStruct.DMA2D_OutputMemoryAdd = (uint32_t)lcd_f_buf_ptr;
DMA2D_InitStruct.DMA2D_OutputOffset = (MAX_X - 1));
DMA2D_InitStruct.DMA2D_NumberOfLine = MAX_X+1;
DMA2D_InitStruct.DMA2D_PixelPerLine = MAX_Y+1;
DMA2D_Init(&DMA2D_InitStruct);
/* Start Transfer */
DMA2D_StartTransfer();
/* Wait for CTC Flag activation */
while(DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET){}


lcd_f_buf_ptr :¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ³ÎÊݤ·¤¿¥á¥â¥êÎΰè¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹
MAX_X :TFT-LCD¤ÎX¼´¤ÎºÇÂç¥É¥Ã¥È¿ô(F429I-Discovery¤Ç¤Ï240¤ÈÄêµÁ
MAX_Y :TFT-LCD¤ÎY¼´¤ÎºÇÂç¥É¥Ã¥È¿ô(F429I-Discovery¤Ç¤Ï320¤ÈÄêµÁ


¥Õ¥©¥¢¥°¥é¥¦¥ó¥É¤Î¥ì¥¤¥ä¡¼¤Ø²èÁü¥Ç¡¼¥¿¤òžÁ÷¤·¤¿¤¤¾ì¹ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë¡£

/* configure DMA2D */
DMA2D_DeInit();
DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M;
DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565;
DMA2D_InitStruct.DMA2D_OutputGreen = 0; /*¡¡M2M·ÏžÁ÷¤Î¾ì¹ç¤Ï»È¤ï¤Ê¤¤ */
DMA2D_InitStruct.DMA2D_OutputBlue = 0; /*¡¡M2M·ÏžÁ÷¤Î¾ì¹ç¤Ï»È¤ï¤Ê¤¤ */
DMA2D_InitStruct.DMA2D_OutputRed = 0; /*¡¡M2M·ÏžÁ÷¤Î¾ì¹ç¤Ï»È¤ï¤Ê¤¤ */
DMA2D_InitStruct.DMA2D_OutputMemoryAdd = (uint32_t)lcd_f_buf_ptr;
DMA2D_InitStruct.DMA2D_OutputOffset = 1;
DMA2D_InitStruct.DMA2D_NumberOfLine = MAX_X+1;
DMA2D_InitStruct.DMA2D_PixelPerLine = MAX_Y+1;
DMA2D_Init(&DMA2D_InitStruct);

/* Configure default values for foreground */
DMA2D_FG_StructInit(&DMA2D_FG_InitStruct);
DMA2D_FG_InitStruct.DMA2D_FGMA = (uint32_t)p;
DMA2D_FGConfig(&DMA2D_FG_InitStruct);

/* Start Transfer */
DMA2D_StartTransfer();
/* Wait for CTC Flag activation */
while(DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET){}


lcd_f_buf_ptr :¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ³ÎÊݤ·¤¿¥á¥â¥êÎΰè¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹
MAX_X :TFT-LCD¤ÎX¼´¤ÎºÇÂç¥É¥Ã¥È¿ô(F429I-Discovery¤Ç¤Ï240¤ÈÄêµÁ
MAX_Y :TFT-LCD¤ÎY¼´¤ÎºÇÂç¥É¥Ã¥È¿ô(F429I-Discovery¤Ç¤Ï320¤ÈÄêµÁ
p :žÁ÷¤·¤¿¤¤²èÁü¥Ç¡¼¥¿¤Î¥Ý¥¤¥ó¥¿

¤È¡¢½¾Íè¤ÎDMA¤ÈƱ¤¸´¶³Ð¤Ç»ÈÍѤ¬²Äǽ¤Ç¤¹¡£¤â¤Ã¤ÈÈÆÍѤÊDMA2D¤Î»ÈÍÑË¡¤Ï
Ʊ¤¸¤¯lcdc_if_basis.c¤ò¤´»²¾È¤¯¤À¤µ¤¤¡£DMA2D¤ÏLTDC¤ÈÁȤ߹ç¤ï¤»¤ë¤È
¶¯ÎϤʥ쥤¥ä¡¼µ¡Ç½¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¤Í¡£
»ä¤Î¥µ¥ó¥×¥ë¤Ç¤ÏÁ´¤¯»È¤¤¤³¤Ê¤»¤Æ¤Þ¤»¤ó¤¬¡¼¡ª


¤È¤¤¤¦Ìõ¤Ç¤½¤ì¤òƧ¤Þ¤¨¤¿¤¤¤Ä¤â¤Î¤ò¥Ó¥ë¥É¤·¤Æ½ñ¤­¹þ¤ß¡¢
ưºî¤µ¤»¤¿¤â¤Î¤¬¾å¤Î²èÁü¤Ç¤¹¡£
ÀŻ߲è¤Ç¤Ï°ã¤¤¤¬Ê¬¤«¤é¤Ê¤¤¤È»×¤¤¤Þ¤¹¤¬°ÊÁ°¤Î8-bitSPI¤Î¤ß¤Çư¤«¤·¤Æ¤¿
¤â¤Î¤È¤ÏÉÁ²è®ÅÙ¤¬¥À¥ó¥Á¤Ç¤¹¤è♥


Àˤ·¤à¤é¤¯¤ÏSTM32F429I-Discovery¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëTFT-LCD¤¬È¯¿§¤Ë¤Á¤ç¤Ã¤È
Îô¤ëÅÀ¤Ç¤¹¡£2014ǯ¸½ºß¤Ç¤Ï͹â»ëÌî³Ñ±Õ¾½¤Ï¤¹¤Ç¤Ë¥Û¥Ó¥¤¥¹¥È¤Ç¤âÍÆ°×¤Ë
Æþ¼ê²Äǽ¤Ê¤Î¤Ç¤½¤ì¤Ë´·¤ì¤¿»ä¤Ë¤È¤Ã¤Æ¤Ï¤¢¤È°ìÊ⤬¤Û¤·¤¤¤È¤³¤í¤È´¶¤¸¤Þ¤·¤¿
(¿ʬºÇ¿·¤ÎÅÛÅëºÜ¤·¤¿¤éÃÍÃÊÄ·¤Í¾å¤¬¤ë¤Ç¤·¤ç¤¦¤±¤É)¡£




¡ü¤¤¤Ä¤â¤ÎFatFs+TFTLCDɽ¼¨¥µ¥ó¥×¥ë¤ÎºÙ¤«¤¤À°È÷¤Ê¤É

LTDC+DMA2D¤ËÂбþ¤·¤¿¤Ä¤¤¤Ç¤ËĹ¤é¤¯ÊüÃÖ¤·¤Æ¤¤¤¿Á´ÉôºÜ¤»STM32F427IIT6´ðÈĤÎ
¥×¥í¥°¥é¥à¤â¸«Ä¾¤·¤Æ°ÂÄê²½¤ò¿Þ¤ê¤Þ¤·¤¿¡£¤¤¤Þ¤µ¤éµ¤ÉÕ¤¤¤¿¤Î¤Ç¤¹¤¬¡¢¿·¤·¤¤
STM32F4¤Ë¸ºß¤¹¤ëFMC(¥Õ¥ì¥­¥·¥Ö¥ë¡¦¥á¥â¥ê¥³¥ó¥È¥í¡¼¥é)¤Ç¤ÏFSMC¤Î
ÀßÄê¤È¤ÏÈù̯¤Ë°ã¤Ã¤Æ¤ª¤ê¤Þ¤·¤¿¡Ä¡£

¤Ê¤ó¤ÈFSMC¤Ç¤Ï¸ºß¤·¤Ê¤«¤Ã¤¿ÊÑ¿ô¤¬¹½Â¤ÂΤËÄɲäµ¤ì¤Æ¤¤¤Æ¤³¤ì¤òÀßÄꤷ¤Æ
¤Ê¤«¤Ã¤¿¤»¤¤¤Çưºî¤¬ÉÔ°ÂÄê¤Ë¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤·¤¿orz¤¤¤Þ¤µ¤éµ¤ÉÕ¤­¤Þ¤·¤¿¤¬
¤Þ¤ÀFMCÀ¤Âå¤Î¿·¤·¤¤STM32F4¤ò»ÈÍѤµ¤ì¤Æ¤¤¤ëÊý¤¬¾¯¤Ê¤¤¤Î¤«»ØÅ¦¤µ¤ì¤º
½õ¤«¤ê¤Þ¤·¤¿¤¦¤Õ¤Õ¤Õ¤Õ¤Õ¤Õ¤Õ£æ

¤Þ¤¿¡¢¤³¤ÎÁ´ÉôºÜ¤»´ðÈĤÏI2C¤Î¥³¡¼¥Ç¥Ã¥¯¤â¾è¤Ã¤Æ¤¤¤Æ²»¼Á¤ÏÈó¾ï¤Ë°­¤¤
¤Ç¤¹¤¬mp3¤äwave¥Õ¥¡¥¤¥ë¤ÎºÆÀ¸¤â²Äǽ¤Ç¤¹¡£»ä¤Î¤¤¤Ä¤â¤Î¥×¥í¥°¥é¥à¤Ç¤Ï
SDIO·Ðͳ¤ÇSD¥«¡¼¥É¤Împ3¥Õ¥¡¥¤¥ë¤Ê¤É¤òÆÉ¤ß¤À¤·¤ÆºÆÀ¸¤·¤Þ¤¹
¡Ä¤¬¤·¤«¤·¥Ó¥Ã¥È¥ì¡¼¥È¤¬¹â¤¤mp3¤ÎºÆÀ¸¤Ç¤ÏSDIO¤Î¥Ç¡¼¥¿ÆÉ¤ß¤À¤·¤ËDMA¤Î
žÁ÷¤ò¹Ô¤¦¤ÈI2S¤ÎÊý¤Î¥µ¡¼¥­¥å¥é¥â¡¼¥ÉDMAžÁ÷¤È´³¾Ä¤·¤Þ¤¯¤ê¤¢¤Ã¤È
¤¤¤¦´Ö¤Ë¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤Ë¤Ê¤Ã¤Æ¥¨¥é¡¼¤ò¤Ï¤¤¤Æ»ß¤Þ¤ê¤Þ¤¹¡£

¤È¤¤¤¦Ìõ¤Ç¤³¤ì¤òÈò¤±¤ë¤¿¤á¤ËSTM32F4¤Ç¤âFIFO¤Î¥Ý¡¼¥ê¥ó¥°¤Ç¤ÎÆÉ¤ß½ñ¤­¤Ë
ËܳÊŪ¤ËÂбþ¤µ¤»¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£ST¥Þ¥¤¥¯¥íÇÛÉÛ¤ÎSTM32F4¤Î¥Ç¥â¤Ç¤Ï
¥Ý¡¼¥ê¥ó¥°¤ÎÆÉ¤ß½ñ¤­¤ÏRead/WriteBlock¤·¤«Âбþ¤·¤Æ¤ª¤é¤ºÈó¾ï¤ËÄã®ÅÙ
¤Ê¤Î¤Ç¤¹¤¬¥Þ¥ë¥Á¥Ö¥í¥Ã¥¯Å¾Á÷¤Ç¤â¥Ý¡¼¥ê¥ó¥°¤ÇÆÉ¤ß½ñ¤­¤Ç¤­¤ë¤è¤¦¤Ë
²þÎɤ·¤Æ¤ª¤ê¤Þ¤¹¡£¥Ý¡¼¥ê¥ó¥°¤Ç¤âDMA¤È¤Û¤ÜƱÅù¤ÎžÁ÷®ÅÙ¤¬ÆÀ¤é¤ì¤¿¤Î¤Ç
®Å٤˴ؤ·¤Æ¤ÏÌäÂê¤Ê¤·¤Ç¤¹¡£


¡Ä¤È¤¤¤¦Ìõ¤ÇDMA¤¢¤¨¤Æ¤ò»ÈÍѤ»¤º¥Ý¡¼¥ê¥ó¥°¤Ë¤è¤ëÆÉ¤ß½Ð¤·¤À¤±¤Ç̵»ö¥Ó¥Ã¥È
¥ì¡¼¥È¤Î¹â¤¤mp3¥Õ¥¡¥¤¥ë¤ÎºÆÀ¸¤â²Äǽ¤È¤Ê¤ê¤Þ¤·¤¿¤á¤Ç¤¿¤·¤á¤Ç¤¿¤·¡ª
(helix¤Î¥Õ¥©¥ë¥À¤Ë¤¢¤ëassembly.h¤Î¥Þ¥¯¥í¤¬Á°²ó¤Îµ¡Ç½ÄɲäǴְã¤Ã¤Æ¤Æ
¤½¤â¤½¤âmp3¥Õ¥¡¥¤¥ë¤¬Á´¤¯ºÆÀ¸¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿¤Î¤Ï¸«Æ¨¤·¤Æ¤¤¤¿¤À¤­¤¿¤¤)


¡ü¤â¤¤¤Ã¤³¤ª¤Þ¤±

»ä¤Î¤¤¤Ä¤â¤Î¤Ç¤Ï°ìÉô¤Împ3¥Õ¥¡¥¤¥ë¤òºÆÀ¸¤·¤¿¤È¤­¤Ë¥¢¡¼¥Æ¥£¥¹¥È/¶Ê̾¾ðÊó
ɽ¼¨¤ÎºÝ¤Ë¥´¥ß¥Ç¡¼¥¿¤¬É½¼¨¤µ¤ì¤Æ¤·¤Þ¤Ã¤Æ¤ª¤ê¤Þ¤·¤¿¤¬¡¢¤³¤Á¤é¤âʸ»úÎ󥹥ȥ¢ÍѤÎ
¥Ð¥Ã¥Õ¥¡(»ä¤Î¥×¥í¥°¥é¥à¤Ç¤ÏCCMÎΰè¤Ë¤¢¤¿¤ë)¤ò°ìö¥¼¥í¥¯¥ê¥¢¤·¤Æ¤«¤é
ɽ¼¨¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¥Ð¥°¤òÄÙ¤·¤Æ¤ª¤ê¤Þ¤¹¡£

°ÊÁ°¤ÏÊѤʥ´¥ß¥Ç¡¼¥¿¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡Ä¡¢

½¤Àµ¸å¤Ï¤³¤ó¤Ê´¶¤¸¤Ë¤¹¤Ã¤­¤ê¤Ç¤¹¡ú

STM32F4¥·¥ê¡¼¥º¤ò»È¤Ã¤Æ¤ß¤ë7 -Helix MP3 Decoder¤ò¼ÂÁõ¤·¤ÆMP3¥Õ¥¡¥¤¥ë¤ÎºÆÀ¸¤ò¹Ô¤¦-

¥Þ¥¤¥³¥ó¤ò»È¤Ã¤¿¹©ºîʪ¤È¤·¤Æ¤ÏÆþÌç¤È¤Ê¤Ã¤¿MP3¥Õ¥¡¥¤¥ë¤ÎºÆÀ¸¤Ç¤¹¤¬¡¢º£ÆüÆü¤Î
¥³¥¢¥¯¥í¥Ã¥¯100MHz±Û¤¨¤ÎMPU¤Ê¤éVS1053Åù¤Î³°ÉÕ¤±¤Î¥Ç¥³¡¼¥À¡¼IC¤ò»È¤ï¤º¤È¤â
¥½¥Õ¥È¥¦¥¨¥¢¤Ç¥Ç¥³¡¼¥É¤¬²Äǽ¤Ç¤¹¡£
STM32F4¤Ëgiflib¤òºÜ¤»¤Æ°ÊÍè¡¢¼¡¤Î¥¹¥Æ¥Ã¥×¤È¤·¤Æ(Æþ±¡Ãæ¤â¥Î¡¼¥ÈPC¤Ç)²»³ÚºÆÀ¸¤Ë
Ä©À路¤Æ¤¤¤Þ¤·¤¿¤¬»ä¤â¤è¤¦¤ä¤¯·Á¤Ë¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤·¤¿¤Î¤Ç¤´¾Ò²ð¤·¤Þ¤¹¡£


¤¹¤Ç¤ËSTM32¤Ç¤ÏShuji009»á¤¬HelixMP3Decorder¤ÇÄ©À蘆¤ì¤Æ¤ª¤ê¡¢¤µ¤é¤Ë
ÌîÅĤµ¤ó¤Ïlibmad¤ÇMP3¥×¥ì¡¼¥ä¡¼¤òÀ½ºî¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤Ï¤³¤Á¤é¤ÎBBS¤Ç¸ø³«¤µ¤ì¤Æ¤¤¤¿Helix+STM32F4Discovery¤òÍøÍѤ·¤¿¤â¤Î
¤òÂçÉôʬ»²¹Í¤Ë¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿¡£¤³¤Î¥×¥í¥°¥é¥à¤ÏSPI¥Ý¡¼¥È¤ò·Ðͳ¤·¤Æ
SD¥«¡¼¥É¤«¤é¥Ç¡¼¥¿¤ò¼èÆÀ¤·¥Ç¥³¡¼¥É¤ò¹Ô¤¦·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¥Ï¡¼¥É¥¦¥¨¥¢Åª¤Ë¤Ï»ä¤Î
¤¤¤Ä¤â¤Î¤È¤Û¤ÜƱ¤¸¹½À®¤À¤Ã¤¿¤Î¤ÇÈó¾ï¤Ë½õ¤«¤ê¤Þ¤·¤¿¡£
¥½¥Õ¥È¥¦¥¨¥¢Åª¤ÊÅÀ¤Ë¤Ä¤¤¤Æ¤ÏChibiOS/RT¤ò»ÈÍѤ·¤Æ¤¤¤¿¤Î¤Ç»ä¤ÎÈóOS´Ä¶­¤Ë°Ü¿¢¤¹¤ë
¤¿¤á¤Ë¤Ï¤µ¤¹¤¬¤Ë¤½¤Î¤Þ¤ÞžÍѤÏÉÔ²Äǽ¤Ç¡¢°ì¤Ä°ì¤Äưºî¤òÍý²ò¤·¤Ä¤ÄºÆ¹½À®¤·¤Æ¤¤¤­
¤Þ¤·¤¿¡£

ChaN»á¤Î¥Õ¥¡¥¤¥é¡¼¤Ï¥Ç¡¼¥¿Å¾Á÷ÍѤËÍÆÎ̸ÇÄêÃͤÎÈÆÍѤÎSRAM¤ò³ÎÊݤ¹¤ë¤è¤¦¤Ë
¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤½¤ì¤ò¾å¼ê¤¯»È¤¤SRAMÍÆÎ̤ò°ìÀÚ̵Â̤ˤ·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢I2S¤Ø¤Î¥Ç¡¼¥¿Å¾Á÷¤Ï¥ê¥ó¥°¥Ð¥Ã¥Õ¥¡¹½À®¤ÇDMA¤¹¤ë¤Î¤ÇCPU¤Ë¤«¤Ê¤ê;͵¤¬
¤Ç¤­¤Þ¤¹¡£

¤¢¤ÈSTM32F4¤ò»È¤¤»Ï¤á¤¿¤³¤í¤«¤é²¿ÅÙ¤â¸ÀµÚ¤·¤Æ¤¤¤Þ¤¹¤¬CCMÎΰè¤ÏDMAÉÔ²Äǽ
¤Ê¤Î¤ÇCCMÎΰè¤ò¥¹¥¿¥Ã¥¯¤È¤·¤Æ»È¤¤¡¢¼«Æ°ÊÑ¿ô¤Ë¥Ð¥Ã¥Õ¥¡¤òÃÖ¤¯¤è¤¦¤Ê¥á¥â¥ê¤Î
»È¤¤Êý¤ò¤·¤Æ¤¤¤ë¤ÈÆÃÄ꺤Æñ¤ÊÉÔ¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¤´Ãí°Õ¤¯¤À¤µ¤¤¡£
¡Ä¤Ã¤Æ¤ï¤¶¤ï¤¶¤³¤¦¤¤¤¦¤³¤È½ñ¤¤¤Æ¤ë¤Î¤Ï¼«Ê¬¤Ç¸À¤Ã¤¿¤Ë¤â·¸¤é¤ºÖȤ俤Ȥ¤¤¦
¤³¤È¤Ç¤¹orz¡£


¤Ä¤¤¤Ç¤Ë¤¤¤Ä¤â¤ÎTFT-LCD¤Ë¤â³Æ¼ï¾ðÊó¤ò¾è¤Ã¤±¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£
MP3¤ÎID¥¿¥°¤Ïv1¤Èv2¤¬¤¢¤ê¡¢v2¤ÇArtist/Title¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹çv1¤ÎÊý¤â
¤¯¤Þ¤Ê¤¯Ãµ¤¹¥ë¡¼¥Á¥ó¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤â¤Á¤í¤óÆüËܸìɽ¼¨¤âFontX2¥É¥é¥¤¥Ð¤ÇÂбþ¤·¤Æ¤Þ¤¹♥


¢¬MP3¥Õ¥¡¥¤¥ë¤òºÆÀ¸¤·¤Æ¤ë¤È¤³¤í¡£48kHz/230kBps¤Ç¤âSTM32F4¤Ï¤Ñ¤ï¤Õ¤ê¤ã¡¼
¡¡¤Ê¤Î¤Ç¤Þ¤Ã¤¿¤¯¤Î;͵¤Ç¤¹♥(¢¨ºÇŬ²½¥ª¥×¥·¥ç¥ó¤Ïɬ¿Ü¤Ç¤¹)


¢¬Riff-WAVE¥Õ¥¡¥¤¥ë¤â¤â¤Á¤í¤óºÆÀ¸²Äǽ¤Ç¤¹¡£WAVE¤Î¥ë¡¼¥Á¥ó¤ÏChaN»á¤Î
¡¡WAVEPlayerFM3¥Þ¥¤¥³¥óÈǤò°Ü¿¢¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿¡£


MP3Helix¤Î¥Ç¥³¡¼¥À¡¼¤ÏCBR¤ÈVBR¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£±éÁÕÃæ¤ËÁ´±éÁÕ»þ´Ö¤ä·Ð²á
»þ´Ö¤ò¥ê¥¢¥ë¥¿¥¤¥à¤Ëɽ¼¨¤¹¤ë¤¿¤á¤Ë¤ÏCBR¤Î¾ì¹ç¤Ï¥Ø¥Ã¥À¤ò½ü¤¤¤¿¥Ð¥¤¥È¿ô¤«¤éÍÆ°×
¤Ë»»½Ð²Äǽ¤Ç¤¹¡£¤·¤«¤·VBR¤Î¾ì¹ç¤Ï¾¯¡¹Ìñ²ð¤Ç¤¹¡£Àµ³Î¤Ë»»½Ð¤·¤¿¤¤¾ì¹ç¤Ï£±¥Õ¥ì¡¼
¥à¤¢¤¿¤ê¤Î¥Ó¥Ã¥È¥ì¡¼¥È¤«¤é¥Ð¥¤¥È¿ô¤ò·×»»¤·¤µ¤é¤Ë¤½¤ì¤òÁ´¥Õ¥ì¡¼¥à¤Ë¤ï¤¿¤Ã¤Æ¹Ô¤¦
ɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¤â¤Á¤í¤ó¤³¤ó¤Ê¤â¤ó¥ï¥ó¥Á¥Ã¥×¥Þ¥¤¥³¥ó¥ì¥Ù¥ë¤Ç¤Ï¤ä¤Ã¤Æ¤é¤ì¤Ê¤¤
¤Î¤Ç¤¹¤¬°Ê²¼¤Î¥×¥í¥»¥¹¤Ç¶á»÷¤Ç¤­¤Þ¤¹¡£

­¡¡¡ID2¥Ø¥Ã¥ÀÎΰè¤Ë¤¢¤ëXing¤È¸Æ¤Ð¤ì¤ë¥Ø¥Ã¥À¤«¤éÁ´¥Õ¥ì¡¼¥à¿ô¤ò»»½Ð
­¢¡¡¥µ¥ó¥×¥ë¥ì¡¼¥È¤«¤é1¥Õ¥ì¡¼¥à¤¢¤¿¤ê¤Î»þ´Ö¤ò»»½Ð
¡¡¡¡ MPEG1Layer-3¤Ï1¥Õ¥ì¡¼¥à¤¢¤¿¤ê1152Sample¤ÈÄêµÁÉÕ¤±¤é¤ì¤Æ¤ª¤ê¡¢¤¿¤È¤¨¤Ð
¡¡¡¡ 44.1KHz¤Ê¤é1¥Õ¥ì¡¼¥à¤Ë¤«¤«¤ë»þ´Ö¤Ï((1152*10^3)/44100(Hz))=26mSec¤È
¡¡¡¡ ¶á»÷¤Ç¤­¤ë¡£
­£¡¡­¡¤È­¢¤ò³Ý¤±¤ë¤ÈÁí±éÁÕ»þ´Ö¤¬¥ß¥êÉÃñ°Ì¤ÇÆÀ¤é¤ì¤ë¡£

Xing¥Ø¥Ã¥À¡¼¤¬Ìµ¤¤¤È¾åµ­¤Îµ»¤¬»È¤¨¤Þ¤»¤ó¤Î¤Ç±éÁÕ»þ´Ö/·Ð²á»þ´Ö¤Ï¤á¤Á¤ã¤¯¤Á¤ã¤Ë
¤Ê¤Ã¤Á¤ã¤¤¤Þ¤¹¡£ËؤɤÎMP3¥¨¥ó¥³¡¼¥À¡¼¤ÏXing¥Ø¥Ã¥À¡¼¤ò¤Á¤ã¤ó¤ÈÉÕÍ¿¤¹¤ë¤Î¤Ç¤¢¤Þ¤ê
µ¤¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¤¬¡Ä¡£



º£²ó¤Î¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤Ç»ÈÍѤ·¤¿aitendo¤µ¤ó¤ÎLCD¤ÏSPIÀܳ¥ª¥ó¥ê¡¼
¤Ê¤Î¤Ç¤¹¤¬¡¢STM32F4¤ÎÀ­Ç½¤Î¤ª¤«¤²¤ÇLCD¤Ø¤ÎžÁ÷¤ò¥½¥Õ¥ÈSPI¤Ë¤·¤Æ¤â²»¤¬°ìÀÚ
ÅÓÀڤ줺;͵¤Ç´Ö¤Ë¹ç¤¦¥ì¥Ù¥ë¤Ç¤¹¡£
STM32F4¤Û¤ó¤È¤¹¤´¤¤¤Ã¤Æ¤Í¡¢¤Þ¤¿°ì¤Ä³Î¿®¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿!



¤Æ¤ï¤±¤ÇÀèÆü¤è¤êÀè¹Ô¤Ç¾Ò²ð¤Ï¤·¤Æ¤ª¤ê¤Þ¤·¤¿¤¬¥½¡¼¥¹¥³¡¼¥É¤ò²þ¤á¤Æ¾Ò²ð¤·¤Þ¤¹¡£
¤ª¤Þ¤±¤Ç¥Õ¥ê¡¼¤Ç»ÈÍѤǤ­¤ëFontX2¤Î¥Õ¥©¥ó¥È¤ä±£¤ì¤¿¥á¥¤¥ó¥³¥ó¥Æ¥ó¥Ä¤ÎTFT-LCD
¥É¥é¥¤¥Ð¤âÂô»³(ÆÃ¤Ëaitendo¤µ¤ó¤Î¤Ç½é´ü²½¥ë¡¼¥Á¥ó¤¬Ä󼨤µ¤ì¤Æ¤Ê¤¤Éʼï)ÄɲÃ
¤·¤Æ¤ª¤ê¤Þ¤¹¤Î¤Ç¤³¤Á¤é¤âÊ»¤»¤Æ³§¤µ¤ó¤Î»²¹Í¤È¤·¤Æ¤¯¤À¤µ¤¤¡£

FM3¥Þ¥¤¥³¥ó¤ò»È¤Ã¤Æ¤ß¤ë4 -¤â¤¦¡¢Ã¯¤â...-

¤â¤¦¿¨¤ëµ¤ÎϤ¬¥¼¥í¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤¤¤Ä¤â¸«¤ËÍè¤Æ¤¯¤À¤µ¤Ã¤Æ¤ëFujitsu¤ÎÊý¡¹
¤Ë¤Ï¿¿¤Ë¿½¤·Ìõ¤Ê¤¤¤Î¤Ç¤¹¤¬¤³¤³¤ÇÂǤÁÀڤäƤ¤¤Ä¤â¤Î¤Î¸ø³«¤ò¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹¡£

¡ü¾¡¤Æ¤Ê¤«¤Ã¤¿¤è¡Ä
Åö½é¼ÂÁõͽÄê¤À¤Ã¤¿°Ê²¼¤Î¥³¡¼¥É¤Ï»ä¤ÎÎÏÉÔ­¤â¤¢¤Ã¤ÆÀ¹¤ê¹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿¡£
¡¦³°ÉôSRAM¥¢¥¯¥»¥¹
¡¡->´ðÈĤËȾÅÄÉÕ¤±¤Þ¤Ç¤Ï¤·¤¿¤±¤ÉÇÛÀþ¤á¤É¤¤¡£
¡¦¾¾±º»á¤Împ3¥×¥ì¡¼¥ä¡¼(libmad)¤Î°Ü¿¢
¡¡->STM32F4¤Çhelix¤ÎÊý¤ò°Ü¿¢¤·¥ê¥Ù¥ó¥¸´°Î»¡£

¡ü¤¤¤Ä¤â¤Î
»ä¤Î¤Ö¤í¤°¤Ë¤ª¤¤¤Æ¤¤¤Ä¤â¤Î¤È¤ÏChaN»á¶àÀ½FatFs¤Î°Ü¿¢Îã¤ò»Ø¤·¤Þ¤¹¡£
¤â¤Á¤í¤óñ¤Ë°Ü¿¢¤·¤¿¤À¤±¤Ç¤Ï¤Ê¤¯TFT-LCD¤ÈÁȤ߹ç¤ï¤»¤¿(Ʊ¤¸¤¯ChaN»á¤Î)
¥Õ¥¡¥¤¥é¤Ë¤è¤ê»ë³ÐŪ¤ËÁàºî¤¬²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤É¤ÎMPU¤Ë¤«¤«¤ï¤é¤º
¤¤¤Ä¤â¤Î¤Ï´ðËÜŪ¤Ë²¼µ­¤Îµ¡Ç½¤òÌÖÍ夹¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤ê¾¤ÎÍÑÅӤˤâ
´Êñ¤Ë±þÍѤǤ­¤ë»ÅÁȤߤȤʤäƤ¤¤Þ¤¹¡£

¡¦FatFs
¡¦UART(TFT-LCD¥É¥é¥¤¥Ð/FatFs¥Æ¥¹¥È¥ë¡¼¥Á¥ó¤Îưºî¤Ëɬ¤ºÉ¬Í×)
¡¦TFT-LCD¥É¥é¥¤¥Ð
¡¦SPIžÁ÷(TFT-LCD¥É¥é¥¤¥Ð¤Ë»È¤¦)
¡¦³°Éô¥Ð¥¹(TFT-LCD¥É¥é¥¤¥Ð¡¦SRAM¤Ë»È¤¦)
¡¦¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎÏ(TFT-LCD¥É¥é¥¤¥Ð¤Ë»È¤¦¡¦BlueScreen¤Î¤â¤Î¤òÈÆÍѲ½¤·¤Æ°Ü¿¢)
¡¦¥¿¥Ã¥Á¥Ñ¥Í¥ëÆþÎÏÍѤΥǡ¼¥¿ÊÝ»ý(FRK-FM3¤Ç¤ÏFRAM¤ò»ÈÍÑ)
¡¦DMAžÁ÷(TFT-LCD¥É¥é¥¤¥Ð¤Ë»È¤¦)
¡¦FONTX2¥É¥é¥¤¥Ð


¡üư¤«¤¹¤¿¤á¤Î¥Ï¡¼¥É¥¦¥¨¥¢¤Î½àÈ÷

FRK-FM3¤Ë¤Î¤Ã¤«¤Ã¤Æ¤¤¤ë¥ì¥®¥å¥ì¡¼¥¿¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏLDO¦¤Î½ÐÎϤ¬»ÈÍÑ
¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ò600mA°ú¤­½Ð¤»¤ëDCDC¥³¥ó¥Ð¡¼¥¿Â¦¤ËÀÚ¤êÂØ¤¨¤Þ¤·¤¿¡£
´ðÈÄñÂΤÇÄÌÅŤ·¤¿»þ¤ÎΩ¤Á¤¢¤¬¤ê¤È¤¿¤Á²¼¤¬¤ê¤ÎÇÈ·Á¤Ï°Ê²¼¤ÎÄ̤ꡣ



¤Þ¤¡ÆÃ¤ËÌäÂê¤â¤Ê¤¤¤Ç¤¹¤Í¡£(¤¢¤Ã¤¿¤éº¤¤ê¤Þ¤¹¤±¤É¡Ä)


´ðÈĤ«¤é³°¤ÎÇÛÀþ¤Ï¡¢GND¤ÈVCC¤ÎÇÛÀþ¤¬¤â¤Î¤¹¤´¤¯´Êñ¤Ë¤Ê¤ë¥¢¥¤¥Æ¥à¥é¥Ü
¤µ¤ó¤Î¥Ñ¥ï¡¼¥á¥Ã¥·¥å¥æ¥Ë¥Ð¡¼¥µ¥ë´ðÈÄ
¤ò»ÈÍѤ·¤Þ¤·¤¿¡£

΢¤Ë¤Ïebay¤ÇÂçÎÌ¤Ë¹ØÆþ¤·¤¿microSD¥«¡¼¥É¥¹¥í¥Ã¥È¤òÀߤ±¤Þ¤·¤¿¡£
°Â²Á¤Ç°ú¤­²ó¤·¤â¤ä¤ê¤ä¤¹¤¤¤Ç¤¹♥


¥¢¥Ê¥í¥°½ÐÎÏ¤Ï¥í¡¼¥Ñ¥¹¥Õ¥£¥ë¥¿¤òÄ̤¸¤ÆÃ±ÅŸ»¥ª¥Ú¥¢¥ó¥×¤Ç¹½À®¤µ¤ì¤¿¥Ü¥ë¥Æ¡¼¥¸¡¦
¥Õ¥©¥í¥ï·Ðͳ¤Ç¹Ô¤¤¤Þ¤¹¡£3.5¦Õ¤Î¥¸¥ã¥Ã¥¯¤ò¤Ä¤±¤ë¥³¥Í¥¯¥¿¤Î¾å¤Ë¸«¤¨¤ë¥Ø¥Ã¥À¥Ô¥ó¤Ï
¥Ü¥ê¾¾´ðÈÄ(LPC2388ÍÑ)¤ò¤Ä¤±¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£


TFT-LCD¥â¥¸¥å¡¼¥ë¤Ï¥Ñ¥é¥ì¥ë/¥·¥ê¥¢¥ëÍѤΥݡ¼¥È¤ò°ú¤­½Ð¤·¤Æ¤Þ¤¹¡£Ãæ±û¤ÎIC¤Ï
¤¯¤Ã¤Ä¤±¤¿¤À¤±¤ÇÇÛÀþ¤ÇºÃÀÞ¤·¤¿1MB¤ÎSRAM...



¤¤¤Ä¤â¤Î¤òư¤«¤·¤Æ¤ß¤¿¤È¤³¤í¤Ç¤¹¡£¤â¤Ï¤ä¤³¤³¤Þ¤Ç¤Ï´ðËܤÎ"¤­"¤Ç¤¹¤Í¡Á¡£

8bit-i8080¤È8bitSPI¤ÎRGB¥Ç¡¼¥¿¤Î¥Ö¥í¥Ã¥¯Å¾Á÷¤ÏDMA¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
¤È¤³¤í¤Ç³°Éô¥Ð¥¹¤ò»ÈÍѤ·¤¿¾ì¹ç¤ÎDMA¤Ï¥á¥â¥ê´ÖžÁ÷°·¤¤¤Ê¤Î¤Ç¤Þ¤À´Êñ
¤Ê¤Î¤Ç¤¹¤¬MFS¤òÍѤ¤¤¿SPI¤ÇDMA¤¹¤ë¾ì¹ç¤Î¶ñÂÎŪ¤Ê¼ê½ç¤¬¤¤¤Þ¤¤¤Á¤ï¤«¤é¤º
Æñµ·¤·¤Þ¤·¤¿¡£»ñÎÁ¤òõ¤·¤ÆFM3¤Î±Ñʸ¤ÎÊý¤Î¥µ¥¤¥È¤ÎÊÌÉʼï¤Î¥µ¥ó¥×¥ëÎã¤Ë
UART¤Ç¤ÎžÁ÷¼ê½ç¤¬¤¢¤Ã¤¿¤Î¤Ç¤³¤ì¤ò¤â¤È¤ËDMAžÁ÷¥ë¡¼¥Á¥ó¤òºî¤ê¤Þ¤·¤¿¡£
žÁ÷¤Ë´Ø¤·¤Æ¤Ï°Ê²¼¤ÎÍ×ÁǤ¬É¬ÍפǤ¹¡£

¡¦MFS¤ÎDMA¤Ï¥Ï¡¼¥É¥¦¥¨¥¢¤Î¥Ç¥Þ¥ó¥ÉžÁ÷¤È¤¹¤ë
¡¦MFS¤ÎÁ÷¿®/¼õ¿®³ä¤ê¹þ¤ß¤òDMAÍ×µá¤È¤·¤Æ»ÈÍѤ¹¤ë
¡¦DMACBx¥ì¥¸¥¹¥¿¤ÎEB¥Ó¥Ã¥È¤ÏΩ¤Æ¤ë¤Î¤ò˺¤ì¤º¤Ë
¡¦Á÷¿®/¼õ¿®³ä¤ê¹þ¤ßµö²Ä¥Ó¥Ã¥ÈΩ¤Æ¤ÆÅ¾Á÷³«»Ï

¤§¤Ã¤È¾Ü¤·¤¤¼ê½ç¤Ï¥½¡¼¥¹¤ò¸«¤Æ¤¯¤À¤µ¤¤(´ÝÅꤲ!)
XMEGA¤ÎMSPI¤ÇDMAžÁ÷¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿·Ð¸³¤¬À¸¤­¤Þ¤·¤¿¡£


¤Á¤Ê¤ß¤Ë®ÅÙ¤ÏÃÙ¤¤¤Ç¤¹¤¬¥½¥Õ¥È¥¦¥¨¥¢SPI¤â½ÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤Þ¤¹¡£
Ìà¤âFM3¤Î¾ì¹ç¤Ï9bitSPI¤¬²Äǽ¤Ê¤Î¤Ç½ÐÈÖ¤Ï̵¤¤¤È»×¤¤¤Þ¤¹¡£



º£²ó¤Ïɽ¼¨·Ï¤â¤Á¤ç¤Ã¤È¤À¤±¥Ñ¥ï¡¼¥¢¥Ã¥×¤·¤Æ¤Þ¤¹¡£¥í¥ó¥°¥Õ¥¡¥¤¥ë¥Í¡¼¥à(LFN)¤â
ɽ¼¨¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤Þ¤¹♥

¤³¤ì¤ÏWAVE¥Õ¥¡¥¤¥ë¤òºÆÀ¸¤·¤Æ¤ë²èÌ̤Ǥ¹¤¬LFN¤ÎÆüËܸì¥Õ¥¡¥¤¥ë̾¤Ë¤â¤â¤Á¤í¤ó
Âбþ¤Ç¤¹¡£¤Á¤Ê¤ß¤Ë»ä¤âf_stat()¤Ç¼èÆÀ¤·¤¿FILEINFO¹½Â¤ÂΤΥǡ¼¥¿¤¬LFN¤À¤±
½¦¤Ã¤Æ¤³¤é¤ì¤Ê¤¤æ«¤Ë¤Ï¤Þ¤Ã¤¿°ì¿Í¤Ç¤¹orzSFN¤«¤éLFN¤ò°ú¤ÃÄ¥¤Ã¤Æ¤¯¤ë
´Ø¿ô¤ò°ì¤ÄÀߤ±¤Æ¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£



¤È¤¤¤¦¤ï¤±¤ÇFM3¤Ë¤«¤Ê¤ê´ó¤êÆ»¤·¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬¤³¤Î·Ð¸³¤òSTM32F4¤Ë
È¿±Ç¤·¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£
¤»¤Ã¤«¤¯STM32F427Ķ³Ê°ÂÁ´ÉôºÜ¤»´ðÈÄÇã¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤â¤Ã¤¿¤¤¤Ê¤¤¤Ç¤¹¤·¡ª

Windows10Âбþ·ÚÎÌ¥·¥ó¥×¥ë¤ÊARM¥Þ¥¤¥³¥ó¤ÎGCC¥Ó¥ë¥É´Ä¶­¤ò¹½ÃÛ¤¹¤ë(2020ǯÅÙÈÇ)

OpenOCD for Windows is HERE!
¢¬¤Í¤à¤¤¤µ¤ó¤Ï¼«Á°¥Ó¥ë¥É¤ÎOpenOCD¥Ð¥¤¥Ê¥ê¸ø³«¤·¤Æ¤Þ¤¹¡£
¡¡²òÀâ¤Ï¤³¤Î¥Ð¥¤¥Ê¥ê¤ò´ð¤Ë¤¹¤¹¤á¤Þ¤¹¤Î¤Ç4649!


Åöµ­»ö¤ÏWindows´Ä¶­²¼¤Ë¤ª¤±¤ëARM¥Þ¥¤¥³¥ó¤Î³«È¯´Ä¶­¹½ÃÛ¤òÌܻؤ·¤Æ¤Ï¤ª¤ê¤Þ¤¹¤¬
»ä¤¬¸ø³«¤·¤Æ¤¤¤ë¥×¥í¥¸¥§¥¯¥È¤ò¥Ó¥ë¥É/¥Ç¥Ð¥Ã¥°¤¹¤ë¤¿¤á¤ËɬÍפʺǾ®¸Â¤Î¼ê½ç¤Î
»ØÆî¤È¤¤¤¦°ÌÃ֤Ť±¤Ç¤¹¡£
¤Ï¤Ã¤­¤ê¸À¤¤¤Þ¤¹¤¬½é³Ø¼Ô¸þ¤­¤Î²òÀâ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ÀìÌçŪ¤Ê¸ì¶ç¤Î°ÕÌ£¤ä
GNUMake¤ò¶î»È¤·¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ó¥ë¥É¤ÎÊýË¡¤ò½ÏÃΤ·¤Æ¤¤¤ëÁ°Äó¤ÇÏäò¿Ê¤á¤Þ¤¹¡£


2019ǯ¸½ºß¤Ï̵ÎÁ¤ÎEclipse¥Ù¡¼¥¹¤Î³«È¯´Ä¶­GNUARMECLIPSE¡¢
STM32¸ÂÄê¤Ç¥Õ¥ëµ¡Ç½¤¬»È¤¨¤ëAtollic TrueStudio¤ÈMDK-ARM¤Î2Éʼ
¤½¤·¤Æ¥ª¥ó¥é¥¤¥ó¥³¥ó¥Ñ¥¤¥é+¥é¥¤¥Ö¥é¥êÅù¤Î¶¯ÎϤʥµ¥Ý¡¼¥È¤¬¤¢¤ëmbed¤È¤«¤¬
½¼¼Â¤·¤Æ¤ª¤ê¡¢°ìÈÌŪ¤Ê»öÊÁ¤ò³Ø¤Ó¤¿¤¤½é³Ø¼Ô¤ÎÊý¤Ë¤Ï¤½¤Á¤é¤ò¶¯¤¯¤ª´«¤á¤¤¤¿¤·¤Þ¤¹¡£


¤Á¤Ê¤ß¤Ë¤Í¤à¤¤¤µ¤ó¤Ï¥á¡¼¥«¥µ¥Ý¡¼¥È¤¬Ìµ¤¤ÁǤÎEclipse¤ò»È¤¦¤ÈŽ¢¤¢¤ï¤Ó¤å¡ªŽ£¤È
¶«¤Ó¤Ê¤¬¤éÁ´¿È¤«¤é·ì¤ò¿á¤­½Ð¤·¤Æ»à¤Ì´ñÉÂ¤ËØí¤Ã¤Æ¤¤¤Æ¡¢³î¤ÄCygwin¤ò»È¤¦¤È
¥Ð¥¹¥È¥µ¥¤¥º¤¬¶¯À©Åª¤Ë20cm¸º¤Î¥Þ¥¤¥Ê¥¹ÊäÀµ¤ò¶ô¤é¤¤(=¥Õ¥é¥Ã¥È¤ÊB(Breasts)ÆÃÀ­
¤ò»ý¤Ä¤¤¤Ê¤¤¤µ¤ó
¤ÈƱ¥ì¥Ù¥ë¤ËÂĤÁ¤Æ¤·¤Þ¤¤¡ËÆú΢¥á¥¤¥É¤Í¤à¤¤¤µ¤ó¤È¤·¤Æ¤Î
¤¢¤¤¤Ç¤ó¤Æ¤£¤Æ¤£¤ò´°Á´¤Ë¼º¤Ã¤Æ¤·¤Þ¤¦¤¿¤á¡¢Åö¤Ö¤í¤°¤Ç¤ÏÀäÂФ˰·¤¤¤Þ¤»¤ó¡£


¡¡¢¨Í×Ãí°Õ¢¨
¡¡¡¡¡¡¥Ä¡¼¥ë·²¤ÎÀ¹¿ê¤ä»þÀª¤Ë¤è¤ê»þ¡¹¹ï¡¹¤ÈËܵ­»ö¤ÎÆâÍÆ¤ÏÊѲ½¤·¤Æ¤¤¤­¤Þ¤¹!



¡üɬÍפʤâ¤Î
¡¡£±¡¥ARMÍÑGCC¥³¥ó¥Ñ¥¤¥é
¡¡¡¡¤È¤Ë¤â¤«¤¯¤Ë¤â¤Þ¤º¤Ï¤³¤ì¤Ç¤¹¡£
¡¡¡¡¸½ºß¤ÏLaunchpad.net¤¬Ä󶡤·¡¢ARMËܲȤ«¤éÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë
¡¡¡¡GNU Tools for ARM Embedded Processors
¡¡¡¡¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£É½¸þ¤­Cortex-Mx¸þ¤±¤È¤Ê¤Ã¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢LPC2388Åù¤Î
¡¡¡¡ARM7TDMI¤â¤·¤Ã¤«¤ê¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¸Å¤¤Éʼï¤Ç¤âÌäÂê¤Ê¤¯¥Ó¥ë¥É¤¬²Äǽ¤Ç¤¹¡£

¡¡¡¡º£²ó¤Î¼ê½ç¤Ç¤Ï¥À¥¦¥ó¥í¡¼¥É¤·¤¿¾åµ­¥³¥ó¥Ñ¥¤¥é¤òC:/Devz/ARM/launchpad
¡¡¡¡Ä¾²¼¤Ë²òÅह¤ë¤â¤Î¤È¤·¤Þ¤¹¡£²òÅà¸ålaunchpad¥Õ¥©¥ë¥À¤Ë¤Ï
¡¡¡¡arm-none-eabi,bin,share,lib¤Î4¤Ä¤Î¥Õ¥©¥ë¥À¤¬¤¢¤ë¤Î¤¬Àµ²ò¤Ç¤¹¡£

¡¡¡¡Windows´Ä¶­²¼¤Çư¤¯ARMÍÑGCC¥³¥ó¥Ñ¥¤¥é¤È¤·¤Æ¡¢Bleeding Edge Toolchain
¡¡¡¡¤Ê¤ó¤«¤â¤¢¤ê¤Þ¤¹¡£¤¤¤º¤ì¤âABI¤ÏEABI¤Ç2015ǯ°Ê¹ßήÄ̤·¤Æ¤¤¤ë
¡¡¡¡ºÇ¿·¤ÎGCC¥³¥ó¥Ñ¥¤¥é¤Ï¤â¤Ï¤ä¤¹¤Ù¤ÆEABI¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£


¡¡£²¡¥¥µ¥Ý¡¼¥È¥Ä¡¼¥ë·²
¡¡¡¡¤Í¤à¤¤¤µ¤ó¤¬¸ø³«¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ó¥ë¥É¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡IDEÁ´À¹¤Îºòº£¤Ï¸Å½­¤¤¤â¤Î¤È¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬make¥³¥Þ¥ó¥É¤Ç¥Ó¥ë¥É¤¹¤ë
¡¡¡¡¤È¤¤¤¦¥Ù¥¿¥Ù¥¿¤Ê¥¯¥é¥·¥Ã¥¯¤Ê¼êË¡¤ò´º¤¨¤Æ¤È¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡make¤Î¾¤Ëunix¥³¥Þ¥ó¥É¤Îecho¤ärm¤Ê¤É¤òÍѤ¤¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤ì¤é¤Îunix
¡¡¡¡¥é¥¤¥¯¤Ê¥³¥Þ¥ó¥É¤ò¥Í¥¤¥Æ¥£¥Ö¤ÊWindows´Ä¶­²¼¤Çư¤«¤¹¤³¤È¤¬¤Ç¤­¤ë
¡¡¡¡Coreutils¤ò»ÈÍѤ·¤Þ¤¹¡£

¡¡¡¡a.CoreutilsËÜÂÎ
¡¡¡¡ Í­»Ö¤ÎÊý¡¹¤¬ºîÀ®¤µ¤ì¤¿Coreutils¤Î"Binaries"¤Î¥ê¥ó¥¯Àè¤ò¥À¥¦¥ó¥í¡¼¥É¤·¡¢
¡¡¡¡ 2¥Ð¥¤¥Èʸ»ú¤ä¥¹¥Ú¡¼¥¹¤ò´Þ¤Þ¤Ê¤¤Ç¤°Õ¤Î¥Õ¥©¥ë¥À¤Ë²òÅष¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡b.GNUMake3.81
¡¡¡¡ ¼¡¤ËGNUMake¤òƱÍͤ˥À¥¦¥ó¥í¡¼¥É¤·¤¿¤¢¤È²òÅषCoreutils¤ò²òÅष¤¿
¡¡¡¡ ¾ì½ê¤ÈƱ¤¸¥Õ¥©¥ë¥À¤ËÃÖ¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡c.¥µ¥Ý¡¼¥ÈDLL·²
¡¡¡¡ ºÇ¸å¤Ëmake¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤¿¥Ú¡¼¥¸¤Î²¼¤Ë¤¢¤ë"dependencies zip file
¡¡¡¡ (Ãæ¿È¤Ïlibintl3¤Èlibiconv2)"¤ò¥À¥¦¥ó¥í¡¼¥É¤·GNUMake¤ÈƱÍͤνèÃÖ¤ò
¡¡¡¡¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¡¡º£²ó¤Î¼ê½ç¤Ç¤Ï¾åµ­3ÅÀ¤¬¤¹¤Ù¤ÆC:/Devz/Coreutils/binÆâ¤Ë¤¢¤ë¤â¤Î¤È¤·¤Þ¤¹¡£
¡¡¡¡¤³¤Îbin¥Õ¥©¥ë¥ÀÆâ¤Ëmake,echo,rmÅù¤Îunix¥é¥¤¥¯¥³¥Þ¥ó¥É¤Èdepedencies¤Î
¡¡¡¡libintl3.dll,libiconv2.dll¤¬Â¸ºß¤·¤Æ¤¤¤ë¤³¤È¤òɬ¤º³Îǧ¤·¤Æ¿Ê¤á¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡¤³¤³¤Ç´Ö°ã¤Ã¤Æ¤ë¤È²¼½Ò¤ÎPN2¤«¤émake¤ò¸Æ¤Ó½Ð¤¹Ãʳ¬¤Ç¥³¥±¤Æ¼ºÇÔ¤·¤Þ¤¹¡£
¡¡¡¡
¡¡¡¡¤è¤¯¤ä¤ë´Ö°ã¤¤¤¬¡¢ºÇ½é¤ÎCoreutils¤ò²òÅष¤Æ½Ð¤Æ¤¯¤ëbin¥Õ¥©¥ë¥À¤ÎÃæ¤Ë
¡¡¡¡¤µ¤é¤Ëmake¤ädepedencies¤ÎÆþ¤Ã¤¿bin¥Õ¥©¥ë¥À¤òÃÖ¤¤¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤¹¡£

¡¡

C:/Devz
¡¡¡¡¡¡¨§ARM
¡¡¡¡¡¡|¨¦launchpad
¡¡¡¡¡¡|¡¡¨¦bin¡¡(¢«GCC¥³¥ó¥Ñ¥¤¥é¤Î¥Ð¥¤¥Ê¥ê¤¬¤¢¤ë¾ì½ê)
¡¡¡¡¡¡|¨¦ocd(¢«openocd.exe¤Î¤¢¤ë¾ì½ê)
¡¡¡¡¡¡¨¦Coreutils
¡¡¡¡¡¡ ¨¦bin¡¡(¢«make¾unix¥é¥¤¥¯¥³¥Þ¥ó¥É·²¤Î¤¢¤ë¾ì½ê)
¡¡¡¡¡¡
¢¬¤Í¤à¤¤¤µ¤ó¤Ï¾åµ­¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½Â¤¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡°Ê²¼¤³¤Î¹½À®¤ÇÏäò¿Ê¤á¤Þ¤¹¡£


¡¡¡¡¤Á¤Ê¤ß¤ËAVRToolChain¤Ç¤âARM¤ÈƱ¤¸¤è¤¦¤Ê´¶¤¸¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ë¤¹¤ë¤È¡¢
¡¡¡¡Æ±¤¸´¶¤¸¤Ç¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ó¥ë¥É¤¬½ÐÍè¤Þ¤¹¤Î¤Ç¤ª¤¹¤¹¤á¤Ç¤¹¡£

¡¡¡¡¢¨°ÊÁ°¤ÏWinAVR¤ÎutilsÇÛ²¼¤Ë¤¢¤Ã¤¿Æ±ÍͤΥե¡¥¤¥ë·²¤Î»ÈÍѤò¿ä¾©¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢
¡¡¡¡¡¡WinAVR¤Ï³«È¯¤¬Ää»ß¤·¿ôǯ·Ð¤Á¡¢¥Õ¥ê¡¼¤ÇÍøÍѤǤ­¤ëAVRToolchain¤Ë¼çή¤¬°Ü¹Ô
¡¡¡¡¡¡¤·¤¿¤Î¤Ç¤â¤¦°ìÀÚ»ÈÍѤ·¤Þ¤»¤ó¤·»È¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£


¡¡£².£µ¡¥sh.exe¤¬¸«¤Ä¤«¤ê¤Þ¤»¤óÂкö(ɬ¤º¤·¤âɬÍפǤϤʤ¤)
¡¡¡¡¥Í¥Ã¥È¾å¤Ç¼ê¤ËÆþ¤ëARM¥Þ¥¤¥³¥ó¤ÎGCC¥×¥í¥¸¥§¥¯¥È¤ÎÃæ¤Ç¤ÏWinAVR¤Îmakefile¤ò
¡¡¡¡¥Ù¡¼¥¹¤Ë¤·¤¿¤â¤Î¤¬¤¤¤¯¤Ä¤«Â¸ºß¤·¡¢¤½¤³¤Ë¤Ïshell´Ø¿ô¤Ê¤É¤Îbash¤Ë°Í¸¤·¤¿µ­½Ò¤¬
¡¡¡¡¿ô¤«½ê¤¢¤ê¤Þ¤¹¡£¤³¤Îµ­½Ò¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¤Þ¤È¤â¤Ë¥Ó¥ë¥É¤¬¤Ç¤­¤Þ¤»¤ó¡£

¡¡¡¡Åö¤Ö¤í¤°¤Ç¸ø³«¤·¤Æ¤ë¥×¥í¥¸¥§¥¯¥È¤Ïmakefile¤«¤ébash(/bin/sh)¤Ë°Í¸¤·¤Æ
¡¡¡¡¤¤¤ëµ­½Ò¤Ï¤¹¤Ù¤ÆÇÓ¤·¤Æ¤ª¤ê¤Þ¤¹¤¬¡¢Â¾¤ÎÊý¤Î¥×¥í¥¸¥§¥¯¥È¤ò¥Ó¥ë¥É¤¹¤ëºÝ¤Î
¡¡¡¡²óÈòÁ¼Ã֤Ȥ·¤Æ¾Ò²ð¤·¤Þ¤¹¡£
¡¡¡¡¤³¤Á¤é¤«¤éwin-bash.zip¤ò¥À¥¦¥ó¥í¡¼¥É¤·¡¢²òÅष¤Æ½Ð¤Æ¤­¤¿win-bash.exe¤ò
¡¡¡¡Coreutils¤Îbin¥Õ¥©¥ë¥À¤ËÆÍ¤Ã¹þ¤ó¤Ç¤¯¤À¤µ¤¤¡£¼¡¤Ëmakefile¡¡¥Õ¥¡¥¤¥ëÃæ¤Ë
¡¡¡¡µ­ºÜ¤µ¤ì¤Æ¤¤¤ë¤Ï¤º¤ÎSHELL¤ÎÀßÄê¤ò°Ê²¼¤Î¤è¤¦¤Ë½ñ¤­´¹¤¨¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡SHELL = sh
¡¡¡¡¢­
¡¡¡¡SHELL = win-bash.exe
¡¡¡¡bash.exe¤Ï¼«¿È¤Î¥Õ¥¡¥¤¥ë̾¤Ë¤è¤Ã¤ÆÆÃ¼ì¤Êư¤­¤ò¤¹¤ë¤Î¤Ç²£Ã夷¤Æwin-bash.exe¤Î
¡¡¡¡Êý¤òsh.exe¤È¥ê¥Í¡¼¥à¤·¤Æ¤·¤Þ¤¦¤ÈµÕ¤Ë¥Ó¥ë¥É¤¬Ä̤é¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¤´Ãí°Õ¤¯¤À¤µ¤¤¡£



¡¡£³¡¥¥¨¥Ç¥£¥¿
¡¡¡¡¥á¥âÄ¢¤ÇŽ¾ŽºŽ¾ŽºÊÔ½¸¤·¤Æ¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¤«¤émake¤ò¼Â¹Ô¤·¤Æ¤â¤¤¤¤¤Ç¤¹¤±¤É
¡¡¡¡make¤ò°ú¿ô¤Ä¤­¤Ç¸Æ¤Ó½Ð¤»¤é¤ì¤ë¥¨¥Ç¥£¥¿¤ò»È¤¨¤ÐIDE¤Î¤è¤¦¤Ë»È¤¨¤Þ¤¹¡ª
¡¡¡¡¤Í¤à¤¤¤µ¤ó¤Î¤ª´«¤á¤ÏProgrammers Notepad2(PN2)¤Ç¤¹¡£ÁǤÎEclipse¤Ï(ry
¡¡¡¡¥Ó¥ë¥É»þ¤Î²òÀâ¤Ï¤³¤ÎPN2¤ò»ÈÍѤ·¤Æ²òÀ⤷¤Þ¤¹¡£

¡¡¡¡Ãí¡§É¬¤ºStable2.3°Ê¹ß¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡¡¡¡¡¤Þ¤¿¡¢ÆüËܸìÆþÎϤËÂбþ¤¹¤ë¤¿¤á¤Ë²¼µ­¤ÎÍ×ÎΤÇ¿¥Ð¥¤¥Èʸ»ú¤ÎÀßÄê¤ò
¡¡¡¡¡¡¡¡¡ÉShift-JIS¡É¤ËÊѹ¹¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡¡¡

¡¡¡¡¤½¤ì¤ÈPN2¤Î¥¤¥ó¥¹¥È¡¼¥ëÀè¤Ï̵ÍѤʥȥé¥Ö¥ë¤òÈò¤±¤ë¤¿¤á¥¹¥Ú¡¼¥¹¤ä2¥Ð¥¤¥È
¡¡¡¡Ê¸»ú¤¬º®¤¶¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤¡£


¡¡£´¡¥¥Ç¥Ð¥Ã¥¬¥½¥Õ¥È¥¦¥¨¥¢&¥Ï¡¼¥É¥¦¥¨¥¢
¡¡¡¡ARMÍѤΥǥХ嬤ϥۥӡ¼¥æ¡¼¥¶¡¼¤´ÍÑã¤ÎGDB¥µ¡¼¥Ð¤Ç¤¢¤ëOpenOCD¤ò
¡¡¡¡»ÈÍѤ·¤Þ¤¹¡£¼¡²ó¤Îµ­»ö¤Ç»ÈÍÑË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£
¡¡¡¡¤Þ¤¿¡¢MCU¤ÈJTAG/SWD¤ÇÄÌ¿®¤¹¤ë¥Ï¡¼¥É¥¦¥¨¥¢¤ÏFTDI¤ÎFT2232·ÏJTAG-I/F¤ò
¡¡¡¡»ÈÍѤ¹¤ë¤Î¤¬»ä¤ÎÃæ¤Ç¥¹¥¿¥ó¥À¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡¤³¤ì¤é¤Ë´Ø¤·¤Æ¤â¼¡²ó¾Ü¤·¤¯¾Ò²ð¤·¤Þ¤¹¡£


¡ü²¼½àÈ÷¤È¥Ó¥ë¥É
¡¡¢¨°Ê¸å¤Ï¥¨¥Ç¥£¥¿¤È¤·¤ÆPN2¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ»È¤¦¤³¤È¤òÁÛÄꤷ¤Æ²òÀ⤷¤Þ¤¹¡£

¡¡£±¡¥¥½¡¼¥¹¥³¡¼¥É¤ÎŸ³«
¡¡¡¡º£²ó¤ÎËÞÎã¤È¤·¤Æ¡¢STM32F4¸þ¤±¤Î±Õ¾½É½¼¨¥×¥í¥°¥é¥à¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ
¡¡¡¡¥í¡¼¥«¥ë¤ËÍî¤È¤·¤¿zip¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥«¥ë¥Õ¥©¥ë¥À¤ËŸ³«¤·¤Þ¤¹¡£
¡¡¡¡¤³¤Î¤È¤­¥Ç¥£¥ì¥¯¥È¥ê¥Ñ¥¹(¥¢¥É¥ì¥¹)¤Ë¥¹¥Ú¡¼¥¹¤ä£²¥Ð¥¤¥Èʸ»ú¤¬ÀäÂФË
¡¡¡¡Æþ¤é¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡

¡¡£²¡¥make¥Õ¥¡¥¤¥ë¤ÎÊÔ½¸
¡¡¡¡PN2¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢³ÈÄ¥»Òpnproj¤Î¥¢¥¤¥³¥ó¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯
¡¡¡¡¤¹¤ë¤È²¼¤Î¤è¤¦¤Ê²èÌ̤ˤʤë¤È»×¤¤¤Þ¤¹¡£"makefile"¤ò¥¯¥ê¥Ã¥¯¤·¤Æmakefile¤Î
¡¡¡¡ÊÔ½¸²èÌ̤ò½Ð¤·¤Þ¤·¤ç¤¦¡£
¡¡¡¡
¡¡¡¡OpenOCD¤Èarm-none-eabi¤Î¥Õ¥¡¥¤¥ë̾¤ÏÆÃ¼ì¤Ê¤³¤È¤ò¤ä¤é¤Ê¤¤¸Â¤ê¤Ï
¡¡¡¡¤â¤¦ÊѤ¨¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡

¡¡¡¡²¼²èÁü¤ÎÍ×ÎΤǤ½¤ì¤¾¤ì¤Î´Ä¶­¤Ë¹ç¤ï¤»¤ÆARMÍÑGCC¥³¥ó¥Ñ¥¤¥é¡¢¥µ¥Ý¡¼¥È¥Ä¡¼¥ë
¡¡¡¡·²¡¢¥Ç¥Ð¥Ã¥¬¤Î¥Ç¥£¥ì¥¯¥È¥ê¥Ñ¥¹¤òÀßÄꤷ¤Æ¤¤¤­¤Þ¤¹¡£¥Ñ¥¹¤Î¶èÀÚ¤ê¤Ï"¥"
¡¡¡¡¤Ç¤Ï¤Ê¤¯"/"¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡¥Ç¥£¥ì¥¯¥È¥ê¥Ñ¥¹¤Ï¥¹¥Ú¡¼¥¹¤ä£²¥Ð¥¤¥Èʸ»ú¤¬ÀäÂÐ¤ËÆþ¤é¤Ê¤¤¤è¤¦¤Ë
¡¡¡¡¤·¤Æ¤¯¤À¤µ¤¤¡£Âç»ö¤Ê¤³¤È¤Ê¤Î¤ÇÆóÅÙ¸À¤¤¤Þ¤¹!!

¡¡¡¡
¡¡¡¡

¡¡¡¡makefile¤Î½ñ¤­Êý¤ÎºîË¡¤Ïº¡½è¤Ç¤Ï²òÀ⤷¤Ê¤¤¤Î¤Ç
¡¡¡¡³Æ¼«¾ÜºÙ¤ÏÄ´¤Ù¤Æ²¼¤µ¤¤¡£


¡¡£³¡¥PN2¤ÎÀßÄê
¡¡¡¡PN2¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤Æ¤Î¿Í¤Ï¡¢make¥³¥Þ¥ó¥É¤òPN2¤Î"TOOL"¤«¤é
¡¡¡¡¸Æ¤Ó½Ð¤¹¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë°Ê²¼¤ÎÍ×ÎΤÇmake¥³¥Þ¥ó¥É¤ò°ú¿ô"all"
¡¡¡¡¤Ä¤­¤ÇÅÐÏ¿¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡¤½¤Î¸å¡¢"build","clean"¤Î°ú¿ô¤Ë¤Ä¤¤¤Æ¤âƱÍͤËÅÐÏ¿¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¡¡
¡¡¡¡
¡¡¡¡

¡¡¡¡½ÅÍס§Windows´Ä¶­ÊÑ¿ô¤ÎPATH¤ÏÀßÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡ª
¡¡¡¡¡¡¡¡¡¡²¼¼ê¤ËÀßÄꤷ¤Æ¤¤¤ë¤È¥Ó¥ë¥É¤¬Ä̤é¤Ê¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¤Î¤Ç¤´Ãí°Õ¤¯¤À¤µ¤¤¡£


¡¡£´¡¥¥Ó¥ë¥É³«»Ï
¡¡¡¡
¡¡¡¡¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïɾ²Á¥Ü¡¼¥É¤ÎÀßÄê¤ÏSTM32F4Discovery¸þ¤±¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¡¡¤Þ¤¿¡¢³ÆÉ¾²Á¥Ü¡¼¥ÉÀßÄê»þ¤Î³Æ¥Ô¥óÇÛÃÖ¤òÃΤꤿ¤¤¾ì¹ç¤ÏƱº­¤Îdoc/Boards.txt¤ò
¡¡¡¡»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¡¡ÀßÄ꤬½ª¤ï¤Ã¤¿¤é"Tool"¤«¤é"make all"¤ò¸Æ¤Ó½Ð¤·¥Ó¥ë¥É³«»Ï¤Ç¤¹¡£
¡¡¡¡

¡¡¡¡¥Ó¥ë¥É¤¬´°Î»¤·¤¿¤é¥á¥â¥ê»ÈÍÑÎ̤ʤɤξðÊ󤬥³¥ó¥½¡¼¥ë¾å¤Ë¸½¤ì¤Þ¤¹¡£
¡¡¡¡¤â¤·¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ê¤É¤¬È¯À¸¤·¥Ó¥ë¥É¤¬»ß¤Þ¤Ã¤¿¤éÀÖ¿§¤Ç¶¯Ä´É½¼¨¤µ¤ì¤ë¤Î¤Ç
¡¡¡¡¥¨¥é¡¼²Õ½ê¤ÎÆÃÄê¤â´Êñ¤Ç¤¹¡£
¡¡¡¡


¡¡¡¡¾åµ­¤Î±Õ¾½É½¼¨¥×¥í¥°¥é¥à¤Ï¥Ç¥Õ¥©¤Ç²¼µ­¤Î¥é¥¤¥Ö¥é¥ê/¥É¥é¥¤¥Ð¤ò
¡¡¡¡Í­¸ú¤Ë¤·¤Æ¤Þ¤¹¡£
¡¡¡¡¡¡¡¡-libjpeg
¡¡¡¡¡¡¡¡-libpng
¡¡¡¡¡¡¡¡-giflib
¡¡¡¡¡¡¡¡-FONTX2¥É¥é¥¤¥Ð
¡¡¡¡¡¡¡¡-Äñ¹³Ëì¼°/ÍÆÎÌÀ­¥¿¥Ã¥Á¥Ñ¥Í¥ë¥É¥é¥¤¥Ð(ÆÃÄê¤Î¥Ü¡¼¥É¸ÂÄê)
¡¡¡¡¡¡¡¡-HelixMP3¥Ç¥³¡¼¥À(ÆÃÄê¤Î¥Ü¡¼¥É¸ÂÄê)
¡¡¡¡¡¡¡¡-HelixHE-AAC¥Ç¥³¡¼¥À(ÆÃÄê¤Î¥Ü¡¼¥É¸ÂÄê)
¡¡¡¡¿ôʬ¤Û¤É»þ´Ö¤¬¤«¤«¤ê¤Þ¤¹¡£Warning¤¬½Ð¤Þ¤¹¤¬¥Ó¥ë¥É»þ¤ÎÀßÄê´­µ¯¤Î
¡¡¡¡¤¿¤á¤Ë¥½¡¼¥¹¥³¡¼¥ÉÃæ¤Ë"#warning"¥×¥ê¥×¥í¥»¥Ã¥µ¤ò´º¤¨¤ÆÆþ¤ì¤Æ¤ë²Õ½ê¤¬
¡¡¡¡¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¤Î¤Çµ¤¤Ë¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£
¡¡¡¡¥¨¥é¡¼¤¬½Ð¤Æ¥Ó¥ë¥É¤¬»ß¤Þ¤Ã¤¿¾ì¹ç¤Ï³Æ¼ïÀßÄê¤ò¸«Ä¾¤·¤Þ¤·¤ç¤¦¡£Ëؤɤξì¹ç¡¢
¡¡¡¡makefileÃæ¤ÇPATH¤ÎÀßÄê¤ò¸í¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¡¡¤Á¤Ê¤ß¤Ë"make all"¤Ï¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤òÁ´Éô¾Ã¤·¤Æ¤Þ¤Ã¤µ¤é¤Ë
¡¡¡¡¤·¤Æ¤«¤é¥Ó¥ë¥É¡¢"make build"¤Ï¤¹¤Ç¤Ë¥ª¥Ö¥¸¥§¥¯¥ÈÅǤ«¤ì¤¿¥½¡¼¥¹¤Ï¥¹¥ë¡¼
¡¡¡¡¤·¤Æ¥Ó¥ë¥É(¥½¡¼¥¹¥³¡¼¥É¤ò°ìÉô½ñ¤­´¹¤¨¤Æ¥«¥Ã¥È&¥È¥é¥¤¤·¤¿¤¤¤È¤­¤ËºÇŬ)¤Ç¤¹¡£
¡¡¡¡"make clean"¤Ï¤½¤Î̾¤Î¤È¤ª¤êÀ¸À®¤µ¤ì¤¿elf¤ähex¥Õ¥¡¥¤¥ë´Þ¤á¤Æ¥¢¥»¥ó¥Ö¥é
¡¡¡¡¥ê¥¹¥È¥Õ¥¡¥¤¥ë¤ä¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Þ¤ë¤Ã¤È¾Ãµî¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£


¤ª¼¡¤Ï¥¿¡¼¥²¥Ã¥ÈCPU¤Ø¤Î½ñ¤­¹þ¤ß&¥Ç¥Ð¥Ã¥°¤Ç¤¹¤¬¡Ä¼¡²ó¤Ë³¤­¤Þ¤¹¡£

STM32F2¥·¥ê¡¼¥º¤ò»È¤Ã¤Æ¤ß¤ë3

4·î¤«¤éËÜÅö¤Ë¾¯¤·¤º¤Ä»È¤¤»Ï¤á¤¿STM32F207¤Ç¤¹¤¬¡¢¸ø¼°¤ÎÊý¤â¤ä¤Ã¤È¤³
»ñÎÁ¤¬½Ð¤½¤í¤Ã¤Æ¤­¤Æ¤À¤¤¤Ö°·¤¤Êý¤¬Íý²ò¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤­¤Þ¤·¤¿¡£

¤È¤ê¤¢¤¨¤º°ì¤Ä¤ÎÄ̲áÅÀ¤È¤¤¤¦¤³¤È¤Ç¤¤¤Ä¤â¤Îchan»á¤ÎLPC2388¸þ¤±¤ÎFatFs
+OLEDɽ¼¨¥×¥í¥°¥é¥à¤Î°Ü¿¢¤ò¤·¤Þ¤·¤¿(¤Û¤È¤ó¤É¸¶·Á¤È¤É¤á¤Æ¤Þ¤»¤ó¤¬¡Ä)¡£
¤¤¤í¤¤¤í¤ä¤Ã¤Æ¤­¤¿Ãæ¤Çjpeg¥Ç¥³¡¼¥À¾è¤»¤¿¤ê(¥Ç¥³¡¼¥É¤¬1.8ÇÜ®¤¯¤Ê¤Ã¤Æ¤ë!)
FONTX2¤Î»È¤¤Êý³Ð¤¨¤¿¤ê¤Çº£²ó¤ÏM+¥Õ¥©¥ó¥È(FONTX2)¤ò»È¤¤Filer¤Î
ÆüËܸìɽ¼¨¤ò²Äǽ¤Ë¤·¤Æ¤ß¤Þ¤·¤¿¡£

¢¬¤ä¤Ã¤È¤³¤³¤Þ¤Ç¤³¤ì¤¿¡Ä
¤Ê¤ó¤ÈÅö¤Îchan»á¤â6/11¹¹¿·¤ÎLPC2368¸þ¤±FatFs¥µ¥ó¥×¥ë¤ÇFiler¤Î
ÆüËܸ첽¤ò¤µ¤ì¤Æ¤¤¤¿¤è¤¦¤Çº£Å٤Ϥ³¤Á¤é¤ò¸µ¤Ë¤·¤Æ¤ª¤ê¤Â¤Ê¤ë¤ÊFiler¤Î
¹½ÁÛ¤òÎý¤Ã¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

¤½¤¦¤½¤¦¡¢µ¤¤Ë¤Ê¤ëFatFs¤ÎÆÉ¤ß¼è¤ê®Å٤Ǥ¹¤¬¡¢SDIO¤¬½Ð¤»¤ëºÇ¹â®ÅÙ¤Î
48MHz¤Þ¤Ç¥¯¥í¥Ã¥¯¤ò°ú¤­¾å¤²¤¿¾ì¹ç¡¢ºÇÂç21MB/Sec¤ò᤭½Ð¤¹¤³¤È¤¬
¤Ç¤­¤Þ¤·¤¿¡ª

¢¬¤Æ¤«¤¤¤Ä¤âÈæ³Ó¤Ë»È¤Ã¤Æ¤ëATPÀ½¤ÎmicroSD¥«¡¼¥É¤â¤¹¤´¤¤¡Äclass6¤Ê¤Î¤Ë¡£
¤·¤«¤·¡¢48MHzưºî¤Ï8bit¥â¡¼¥É¤·¤«Êݾڤ·¤Æ¤¤¤Ê¤¤(rm0033.pdf¤è¤ê)¤Î¤Ç
sd¥«¡¼¥É¤Ç»È¤¦¤È¤­¤Ï¼ÂºÝ¤Ï24MHz¤Çư¤«¤¹¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¤¹¤¬
¡Ä¤½¤ì¤Ç¤â½½Ê¬Áᤤ¤Ç¤¹¤Í¡£



¤ª¤­¤Ð¤Ë¤Ï¤¹¤Ç¤Ë¾åµ­¤Ç¾Ò²ð¤·¤¿STM32F207ZGT6¸þ¤±¤Î¥×¥í¥°¥é¥à¤ò
¸ø³«¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ÏPowerAVRÀ½¤Î¹Èµí(¤â¤È¤ÏSTM32F103ZET6)¤È¤¤¤¦
¥Ü¡¼¥É¤Î²óÏ©¸ß´¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤óSTM32F2¸þ¤±¤ËÈ÷¤¨¤Æ¤«¤Ê¤êÁ°¤Ëtaobao¤ÇÉôÉÊ̤¼ÂÁõ¤Î´ðÈÄ
"¤À¤±"Ķ°Â²Á¤Ç¹ØÆþ¤·¤Æ¤¤¤Þ¤·¤¿¡£¤Æ¤ï¤±¤Ç¥Û¥ó¥È¤ËºÇÄã¸Â¤Î¤³¤È¤·¤«
¤Ç¤­¤Ê¤¤¤Î¤Ç¤¹¤¬F2¤ò»î¤¹¤ËÅö¤¿¤Ã¤Æ¤Ï¤³¤Ã¤Á¤ÎÊý¤¬´öʬÅԹ礬¤è¤¤¤Î¤Ç¤¹¡£

¤³¤³¤«¤é¤É¤ó¤É¤óÉÕ¤±Â­¤·¤Æ¤¤¤­¤Þ¤¹

¤Þ¤¿make¥Õ¥¡¥¤¥ëÆâ¤ÎÄêµÁ¤Î½ñ¤­´¹¤¨¤Ë¤è¤Ã¤Æ°ÊÁ°»È¤Ã¤Æ¤¤¤¿STM32F207VGT6
¸þ¤±¤Ë¤âÂбþ¤Ç¤­¤Þ¤¹¡£
STM32F207VGT6¤ÎÊý¤Ï¤³¤Á¤é¤Î(STM32F103VET6)¥Ü¡¼¥É¤Î
²óÏ©¸ß´¹¤Ç¤¹¡£Î¾¼Ô¤Ë¶¦Ä̤¹¤ë¤Î¤ÏFSMC¤Î¥Ô¥ó¤¬°ú¤­½Ð¤µ¤ì¤Æ¤¤¤Æ½ÐÍè¹ç¤¤¤Î
LCD¥Ü¡¼¥É¤¬Ä¾·ë¤Ç¤­¤ë¤È¤¤¤¦ÅÀ¤Ë¿Ô¤­¤Þ¤¹
(☝TFT-LCD¥Þ¥Ë¥¢¤Ê¿Í¤Ë¤ÏͽÅÍפʥե¡¥¯¥¿¡¼)¡£
¤Þ¤¡¥Ç¡¼¥¿¥·¡¼¥È¤Ç1xx·Ï¤È¤Î¥Ô¥ó¤Î½èÍýÊýË¡¤Î°ã¤¤¤È¤«¤È¤«
¾Ü¤·¤¯²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¤ó¤Ç¡¦¡¦¡¦¡¦¡¢
Æüº¢¤Í¤à¤¤¤µ¤ó¤Î¤Ö¤í¤°ÆÉ¤ó¤Ç¤ë¿Í¤Ê¤é´Êñ¤Ë¾è¤»´¹¤¨²Äǽ¤Ç¤·¤ç¤¦¡£

¤¢¤È³«È¯´Ä¶­¤Îtips¤È¤·¤Æ¡¢Á°²ó¤âÀâÌÀ¤·¤Þ¤·¤¿¤¬CodeSourceryG++Åù¤Î
¥Ý¥Ô¥å¥é¡¼¤ÊGCC³«È¯´Ä¶­¤Ï¤½¤Î¤Þ¤Þ»ÈÍѤǤ­¤Þ¤¹¡£Cortex-M3Âбþ¤Ê¤é
²¿¤Ç¤â¤è¤¤¤Ç¤·¤ç¤¦¡£ÌäÂê¤Ï½ñ¤­¹þ¤ß´Ä¶­¤Ç¤¹¤¬¡Ä20110619¸½ºß¤Ï¥·¥¹¥Æ¥à
¥á¥â¥ê¾å¤Î¥Ö¡¼¥È¥í¡¼¥À¤«¤é»ÈÍѤǤ­¤ë¥Õ¥ê¡¼¤Î¥Ä¡¼¥ë¤¬¤Þ¤ÀÀ°¤ï¤º¡¢
¤è¤Ã¤ÆJTAG/SWD¤«¤é¤·¤«½ñ¤­¹þ¤àÊýË¡¤¬¤¢¤ê¤Þ¤»¤ó¡£¹¬¤¤OpenOCD¤Î0.5.x·Ï¤È
Versaloon¤Ï¤¹¤Ç¤ËSTM32F2·Ï¤Î¥Õ¥é¥Ã¥·¥å¤Î½ñ¤­¹þ¤ß¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
»ä¤â¥Õ¥é¥Ã¥·¥å½ñ¤­¹þ¤ßÍѤÎOpenOCD¥³¥ó¥Õ¥£¥°¤ò¸ø³«¤·¤Æ¤¤¤Þ¤¹¤Î¤ÇJTAG¤Ê
¤¤¤·¤ÏSWD¤Ç¤Ä¤Ê¤²¤é¤ì¤ë¥¢¥À¥×¥¿»ý¤Ã¤Æ¤ë¿Í¤Ï³«È¯¤ËºÝ¤·¤ÆÌäÂê¤Ï¤Ê¤¤¤Ç¤¹¡£

ºÇ¸å¤Ë¡¢¼¡²óͽÄê¤ÎLPC2388´ØÏ¢¤Îµ­»ö¤Ç¾Ü¤·¤¯²òÀ⤷¤Þ¤¹¤¬¡¢64bitÈÇ
Windows7´Ä¶­²¼¤Î¥Ó¥ë¥É¤Ë¤âmakefile¤ÎÀßÄê¤ÇÂбþ¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£
Éû¶ÈÀè¤Î¥Ý¥¸¥·¥ç¥ó¤ÈPC´Ä¶­¤¬¥¬¥é¥Ã¤ÈÊѤï¤Ã¤¿¤Î¤Ç¤Í¤à¤¤¤µ¤ó¤âɬÍפË
Ç÷¤é¤ì¤Æ¤È¤¤¤¦¤Î¤â¤¢¤Ã¤¿¤ê¤·¤Æ¤Þ¤¹¡£
¤Í¤à¤¤¤µ¤ó¤È¤¦¤È¤¦½¾¶È°÷B¤«¤éÀ²¤ì¤Æ¥¨¥ó¥¸¥Ë¥¢¤Ë¤¸¤ç¤Ö¤Á¤§¤ó¤Â¡ª
(¤ä¤Ã¤Æ¤ë¤³¤ÈÁêÊѤï¤é¤º»¨ÍѤÀ¤¬)






¤ª¤Þ¤±¡§
aitendo¤µ¤ó¤«¤é¤Ä¤¤¤Ë¤¢¤Î°·¤¤¤ä¤¹¤¤SPI±Õ¾½¤¬ÈÎÇ䤵¤ì¤Þ¤·¤¿¤Í¡£
°ÊÁ°»ä¤¬ÀâÌÀ¤·¤¿ÅۤǤ¹¡£¤³¤ì»È¤Ã¤¿¥·¡¼¥ë¥É¤È¤«¤â³¤³°¤Ç¤Ï¤â¤¦¤¹¤Ç¤ËÈÎÇ䤵¤ì¤Æ
¤Þ¤¹¤¬¡¢TFT-LCD Shield¤ò³«È¯¤·¤¿»þ¤ÎÀ¸´ðÈĤòÍøÍѤ·¤ÆÌµÍý¤ä¤ê¾è¤Ã¤±¤Æ¤ß¤Þ¤·¤¿¡ª

¼¡¤Ï¤³¤ì¤Ç¹Ô¤³¤¦¡£

¤½¤·¤Æaitendo¤µ¤ó¤«¤é¤Ï¤â¤¦°ì¤ÄQCIF¥µ¥¤¥º¤Î¥¿¥Ã¥Á¥Ñ¥Ã¥É¤Ä¤­¤Î±Õ¾½¤¬È¯Ç䤵¤ì¤Þ
¤·¤¿¡£¤³¤ì³Î¤«taobao¤Ç¼Î¤ÆÃͤÇÇä¤é¤ì¤Æ¤Æ»ä¤â10Ë礯¤é¤¤¤Þ¤È¤á¤ÆÇã¤Ã¤ÆÆ°¤«¤·¤Æ
(˰¤­¤ÆÊüÃÖ)¤·¤Æ¤Þ¤·¤¿¡£¤³¤ì8/16bitÁªÂò¤Ç¤­¤ë¤Î¤ÏÎɤ¤¤Î¤Ç¤¹¤¬¡¢¥Ô¥ó´Ö³Ö¤¬0.7mm
¤Ê¤Î¤Ç¼êÇÛÀþ¤Ç¤Ï¤­¤Ä¤¤¿Í¤¬¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤Ç¤¹¤Í¡£ÀìÍѤÎÊÑ´¹¥Ü¡¼¥É½Ð¤ë¤ÎÂԤä¿
Êý¤¬Îɤ¤¤È»×¤¤¤Þ¤¹¡£¤É¤Á¤é¤«¤È¤¤¤¦¤È¡Ä¡¢

¤³¤Ã¤Á¤È¤«

¤³¤Ã¤Á¤È¤«

¤³¤Ã¤Á
¤ÎÊý¤¬¥Ô¥ó´Ö¹­¤¤¤·8bit¸ÇÄê¤Ç¾®Æñ¤·¤¤¤³¤È¹Í¤¨¤Ê¤¯¤ÆÎɤ¯¤Æ¤è¤¤¤È»×¤¤¤Þ¤¹¡£
»×¤¤¤Þ¤¹¤è¤¥¡ª¡ª(½Åʸ)


¢¬AS021350D¤òXMEGA¤Çư¤«¤·¤Æ¤ß¤¿¤È¤³¤í¡£
¼Â¤ÏATXMEGA128A1¤Ë¤âchan¤µ¤ó¤ÎFiler¤òÆüËܸìÂбþ¤·¤Æ°Ü¿¢¤ËÀ®¸ù¤·¤Æ¤Þ¤¹¡£
¤·¤«¤·XMEGA¤ÏFatFs¤ò·ë¶ÉDMA²½¤Ç¤­¤Ê¤¤¤Þ¤ÞÇò´ú¹ß¤Ã¤Æ¥¯¥í¡¼¥º¤·¤Þ¤¹¡Ä¡£
20230701ÄÉ:
DMA²½¤·¤ÆSRAM¤â³°ÉÕ¤±¤·¤Þ¤·¤¿¤è¤¦¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª£±¡ª¡ª¡ª

XMEGA¤ò»È¤Ã¤Æ¤ß¤ë4


¤¿¤Ì

¤¿¤Ì

¤¿¤Ì¡ª
¤Í¤à¤¤¤µ¤ó¤â¤Ä¤¤¤Ë¤¿¤Ì¤¿¤Ì¤ÎOWNER¤Ë¤Ê¤ì¤¿¡Ä
Îɤ¤¤³¤È¤¢¤ë¤ÈÎɤ¤¤Ç¤¹¤Í¡Á♥Ë¡ÌÀ±¡¤Ç¸«¤¿¤È¤­°ÊÍè¹û¤ì¤³¤ß¤Þ¤·¤¿♥
¤Á¤Ê¤ß¤Ë¤³¤Î»Ò¡¢Á°²ó¤¿¤Ì¤­Â¼¹Ô¤Ã¤¿»þ¤Ë¥²¥Ã¥Ä¤·¤¿¤È¸À¤Ã¤Æ¤¤¤¿Êª¤Ç¤¹¡ª





¡Ä¤µ¤ÆËÜÂê¡¢Windows¾å¤ÇGCC¤Ë¤ÆAVR/XMEGA¤Î³«È¯¤¬¼ê·Ú¤Ë¤Ç¤­¤ë"WinAVR"¤Ï¡¢
20100110ÈǤdz«È¯¤Ï½ªÎ»¤·¤Æ¤ª¤ê¸½ºß¤ÏATMEL¸ø¼°¤«¤éÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë
AVR ToolChain
¤Ø¤È¤Ò¤­¤Ä¤¬¤ì¤Æ¤¤¤Þ¤¹¡£
¤½¤·¤Æ°ÊÁ°¤«¤éÈó¸ø¼°¤Ç³¤³°¤Î·Ç¼¨ÈĤǽвó¤Ã¤Æ¤¤¤¿Í­ÍѤÊProgramMemory
¥¢¥¯¥»¥¹¤Î°Ù¤Î¥Þ¥¯¥í¤¬º£²ó¤«¤éÀµ¼°¤Ë¤È¤ê¤³¤Þ¤ì¤Æ¤¤¤¿¤ê¤¹¤ë¤Î¤Ç¤³¤³¤¤¤é¤Ç
¤Á¤ç¤Ã¤È¤Þ¤È¤á¤Æ¤ß¤¿¤¤¤È»×¤¤¤Þ¤¹¡£



¤½¤â¤½¤â¤Î¤Ï¤¸¤Þ¤ê¤ÏXMEGA¿¨¤ê½Ð¤·¤¿µîǯ¤Ë¤µ¤«¤Î¤Ü¤ê¤Þ¤¹¡£¤¤¤í¤¤¤í
ʸ¶ç¿â¤ì¤Ê¤¬¤éXMEGA¤òư¤«¤·¤ÆÍ褿¤ï¤±¤Ç¤¹¤¬ARM¤Ç¤Ï¤ªÃã¤Î»Ò¤µ¤¤¤µ¤¤¤Ç
¤Ç¤­¤¿¤Ï¤º¤Î"FontX2¥Õ¥¡¥¤¥ë¤Î¤è¤¦¤ÊÂçÍÆÎ̤Υǡ¼¥¿¤òÇÛÎó¤È¤·¤ÆËä¤á¹þ¤à"
¤³¤È¤¬¤Ç¤­¤Ê¤¤¤È¤¤¤¦ÅÀ¤Çíµ¤¤¤¿¤³¤È¤«¤é¤Ç¤·¤¿¡£¤³¤ìAVR¤ÎÀ©Ìó¤È¤¤¤¦¤è¤ê
AVR-GCC¤ÎÀ©Ìó¤È¸À¤Ã¤¿Êý¤¬Àµ¤·¤¤¤Î¤Ç¤¹¤¬¡¢

£±¡¥°ú¿ô¤¬32767°Ê¾å¤ÎÇÛÎó¤ò³ÎÊݤ¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤
£²¡¡uint32_t¤ÎÇÛÎó¤È¤·¤Æ¥Ð¥¤¥È¿ô¤ò²Ô¤´¤¦¤È¤·¤Æ¤â¤½¤â¤½¤â¹ç·×32767¥Ð¥¤¥È
¡¡¡¡°Ê¾å¤Ë¤Ê¤ëÇÛÎó¤ò³ÎÊݤ¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤
£³¡¥64kb°Ê¾å¤Î¥á¥â¥êÎΰè¤Î¥¢¥É¥ì¥¹¤ËÄ̾ï¤Î¥Ý¥¤¥ó¥¿¤ò»È¤Ã¤ÆÍưפË
¡¡¡¡¥¢¥¯¥»¥¹¤¬¤Ç¤­¤Ê¤¤

¤Èʬ¤«¤ëÈϰϤǾ夲¤Þ¤·¤¿¤¬¡¢ÉáÄ̤ÏAVR»È¤¤¤Î¿Í¤Ï¥Õ¥é¥Ã¥·¥å¥á¥â¥êÍÆÎÌ64kb
°Ê²¼¤ÎAVR¤ò»È¤¤¥Õ¥©¥ó¥ÈÅù¤ÎÂçÍÆÎ̤Υǡ¼¥¿¤ÏSD¥«¡¼¥É¤ËÃÖ¤¤¤Æ¤½¤³¤«¤é
¥¢¥¯¥»¥¹¤¹¤ë¤È¤¤¤¦¼êÃʤ¬¾ïÅå¤È¤Ê¤Ã¤Æ¤¤¤Æº£²ó»ä¤Î¤è¤¦¤Ë²£Ã夷¤ÆC¤ÎÇÛÎó
¤È¤·¤ÆÂçÍÆÎ̤Υǡ¼¥¿¤ò¥Õ¥é¥Ã¥·¥å¤Ë¾Æ¤­¤³¤à¤è¤¦¤Ê¤³¤È¤ò°Â°×¤Ë¹Í¤¨¤ë¤È
¤³¤ÎÌäÂê¤Ë°ú¤Ã¤«¤«¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£


¤³¤ì²¿¤È¤«¤Ê¤é¤Ê¤¤¤«¤È¤¤¤í¤¤¤í¸¡º÷¤·¤ÆÄ´¤Ù¤Æ¤¤¤ë¤È¿ôǯÁ°¤ËŽ¢£Ð£É£Ã¡¡
£Á£Ö£Ò¡¡¹©ºî¼¼Ž£¤Înekosan»á¤âƱ¤¸ÌäÂê¤Ë
Åö¤¿¤é¤ì¤Æ¤¤¤¿¤è¤¦¤Ç¤³¤ÎÀ©Ìó¤Ë¤Ä¤¤¤ÆÈó¾ï¤Ë¿¼¤¤¹Í»¡¤ò¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£
nekosan»á¤ÏºÇ½ªÅª¤ËÀ©Ìó¤Ë°ú¤Ã¤«¤«¤é¤Ê¤¤¤è¤¦¤Ë¤¤¤¯¤Ä¤«Ê¬³ä¤·¤¿ÇÛÎó¤È¤·¤Æ
¥¢¥¯¥»¥¹¤¹¤ëÊý¼°¤Ë¤µ¤ì¤¿¤è¤¦¤Ç¤¹¡£¤Þ¤¿Æ±Æü¤Î¥³¥á¥ó¥ÈÍó¤Ë¤Ïnekosan»á¤È
Chuck»á¤Î¤ä¤ê¼è¤ê¤¬¤¢¤ê¡¢¤½¤ÎÃæ¤ÇÃæ¤ËGET_FAR_ADDRESS¤È¤¤¤¦Ã±¸ì¤¬
½Ð¤Æ¤­¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¸å½Ò¤·¤Þ¤¹¤¬"£³¡¥"¤ÎÀ©Ìó¤ò²ò¾Ã¤¹¤ë¤¿¤á¤ÎÈó¾ï¤Ë
½ÅÍפʥ­¡¼¥ï¡¼¥É¤È¤Ê¤ê¤Þ¤¹¡£


¤µ¤Æ¡¢À©Ìó¤Ï¤ï¤«¤Ã¤¿¤±¤É¼ÂºÝ¤É¤¦¤¹¤ê¤ã¤¤¤¤¤Î¤È¸À¤¦Ïäˤʤê¤Þ¤¹¤¬¡¢
»ä¤Ï¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤òľÀÜ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤Æ¾Æ¤­¤³¤ó¤ÇC¤«¤é¤Ï
¥¤¥ó¥Ç¥Ã¥¯¥¹¤À¤±°ú¤ÃÄ¥¤Ã¤ÆÍ褿¤é¤¤¤¤¤ó¤¸¤ã¤Í¡©¤È¹Í¤¨¡¢¤µ¤é¤Ë¥°¥°¤Ã¤Æ¤ß¤ë¤È
avr-freaks¤Î¥Õ¥©¡¼¥é¥à¤Ëavr-objcopy¤Ç¹Ô¤¦ÊýË¡¤Î
µÄÏÀ¤¬¤¢¤ê¤Þ¤·¤¿¡Ä¤Ã¤Æ²¿Ç¯¤âÁ°¤À¤±¤É¤³¤ì¤¢¤Ã¤Á¤Ç¤ÏFAQ¥ì¥Ù¥ë¤Ê¤Î¤«¡Ä



ÃÖ¤­¾ì¤Ë¤¢¤ëxmega¤ÎFatFS+TFT-LCDɽ¼¨¤Î¥Ç¥â¤Ë¤Ïmake¥Õ¥¡¥¤¥ëÃæ¤Ë
¶ñÂÎŪ¤ËÈþºé¥Õ¥©¥ó¥È¤òAnk¤È´Á»ú¤È¤â¤Ë¥ª¥Ö¥¸¥§¥¯¥È²½¤·elf¤Ë¼è¤ê¹þ¤à¤¿¤á¤Î
µ­½Ò¤ò¤·¤Æ¤¢¤ê¤Þ¤¹¡£

¤ó¤Ç¤³¤ì¤òC¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë¤Ïavr-objcopy¤ÇÅǤ«¤ì¤¿¥é¥Ù¥ë¤ò
»²¾È¤¹¤ì¤Ð¤ª£ë¤Ç¤¹♥

¡Ä¤È¸À¤¤¤¿¤¤¡¡¤È¡¡¤³¡¡¤í¡¡¤À¡¡¤¬¡ª

64kByte°Ê¾å¥×¥í¥°¥é¥à¥á¥â¥ê¤ò»ý¤ÄAVR¤Ë¤ª¤¤¤Æ¡¢64kByte°Ê¾å¤ÎÎΰè¤Ë
¤¤¤Ä¤â¤ÎÄ´»Ò¤Ç¥¢¥¯¥»¥¹¤·¤è¤¦¤È¤¹¤ë¤È¤ª¼¡¤Ï"£³¡¥"¤ÎÀ©Ìó¤Ë¤¢¤¿¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤½¤â¤½¤âavr-gcc¤Ï¥¢¥É¥ì¥¹¤¬16bit¤È¤·¤Æ½èÍý¤µ¤ì¤Æ¤¤¤Æ¡¢64kb°Ê¾å¤Î
¥á¥â¥êÎΰè¤Ë¥¢¥¯¥»¥¹¤¹¤ë»þ¤ÏÈó¾ï¤ËÅԹ礬°­¤¤¤Ç¤¹(int·¿¤¬16bit¤Ê¤Î¤«¤é
¤ª»¡¤·¤Ç¤­¤ë¤È»×¤¤¤Þ¤¹)¡£¤¿¤È¤¨¤Ð¡Ä

prog_char inaisan[] = "daisuki!";

¤È¤¤¤¦¥×¥í¥°¥é¥à¥á¥â¥ê¾å¤Î¥Ç¡¼¥¿¤ò»²¾È¤¹¤ëºÝ¤Ë¤³¤Î¥Ç¡¼¥¿¤¬¥×¥í¥°¥é¥à
¥á¥â¥ê¾å¤Î64kByte°Ê¾å¤Î¥¢¥É¥ì¥¹¤ÎÎΰè¤Ë¤¢¤Ã¤¿¾ì¹ç¡¢

pgm_read_byte_far((uint_farptr_t)inaisan);

¤Ã¤Æ¤ä¤Ã¤Æ¤âÇÛÎóinaisan¤ÎƬ¤Î¥Ç¡¼¥¿'d'¤ÏÆÉ¤ß½Ð¤»¤Þ¤»¤ó¡£ËÜÍè¤Î¥¢¥É¥ì¥¹
¤«¤é65535¤µ¤Ã¤Ô¤«¤ì¤¿¥¢¥É¥ì¥¹¤Ë¤¢¤ëÆÜÄÁ´Á¤Ê¥Ç¡¼¥¿¤¬Ê֤äƤ¯¤ë¤Ç¤·¤ç¤¦¡£
¤³¤ì¤ÏËÜÍè24bit¤¢¤ë¤Ï¤º¤ÎÇÛÎó¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¥¢¥É¥ì¥¹¤òƬ8bitʬ¥«¥Ã¥È
¤·¤¿16bit¤ÇÅϤ·¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¹(¥Ý¥¤¥ó¥¿ÊÑ¿ô¤ò²ðºß¤µ¤»¤Æ¤â¥Ý¥¤¥ó¥¿¤Î
¥µ¥¤¥º¤â16bit¤Ç¡¢16bitʬ¤Î¥¢¥É¥ì¥¹¤·¤«É½¸½¤Ç¤­¤Ê¤¤¤«¤éƱ¤¸·ë²Ì)¡£
¤³¤ì¤ò²ò¾Ã¤¹¤ë¤Î¤¬GET_FAR_ADDRESS¤È¤¤¤¦¥Þ¥¯¥í¤Ç¡¢uint32_t·¿¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£

¤³¤Î¥Þ¥¯¥í¤òÄ̤¹¤Èpgm_read_byte_farÅù¤ÎELPM¤ò»È¤¦´Ø¿ô¤Ø24bit¥¢¥É¥ì
¤È¤·¤ÆÀµ¾ï¤ËÃͤòÅϤ¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤³¤Î¥Þ¥¯¥í¤ÏĹ¤é¤¯Èó¸ø¼°¤Ç¤·¤¿¤¬
¸½ºßATMEL¤«¤éÇÛÉÛ¤µ¤ì¤Æ¤¤¤ëAVR Toolchain¤Ç¤Ïpgm_get_far_address¤È
̾¤ò¤«¤¨¤Æ¸ø¼°¤Ë¤È¤ê¤³¤Þ¤ì¤ë¤³¤È¤È¤Ê¤ê¤Þ¤·¤¿¡£¤á¤Ç¤¿¤·¤á¤Ç¤¿¤·¡£
¡Ä»ä¤ÎÀâÌÀʬ¤«¤ê¤º¤é¤¤¤«¤é³Æ¼«pgmspace.h¸«¤¿Êý¤¬Áᤤ¤È»×¤¤¤Þ¤¹¡Ä¡£


¢¬¤ó¤Ç¡¢¸«¤¿Ìܤϵîǯ¤ÈÁ´¤¯ÊѤï¤ê±Ç¤¨¤·¤Þ¤»¤ó¤¬¾åµ­¤Î¤¹¤Ù¤Æ¤òÈ¿±Ç¤µ¤»¤Æ¡¢
¡¡AVR Toolchain¤Ç¥Ó¥ë¥É¤·¤ÆÆ°¤«¤·¤¿XMEGA¤Î¥Ç¥â¤µ¤ó¡£
¡¡¤ä¤Ã¤ÑARM¤ÎÊý¤¬ÁȤߤ䤹¤¤¤Ê¤¡¡Ä¤È»×¤¦¤³¤È¤Ò¤È¤·¤­¤ê




¤Ä¤é¤Ä¤é¤È¤Þ¤È¤Þ¤ê¤­¤ì¤Ê¤¤¤Þ¤È¤á¤ò½ñ¤¤¤Æ¤ß¤Þ¤·¤¿¤¬¡¢WinAVR¤«¤éAVR Toolchain¤Ë
ÊѤï¤Ã¤Æ¤«¤éµ¤¤Å¤¤¤¿¤³¤È¤ÎTips¤È¤«

¡üunix¥é¥¤¥¯¤Ê¥Ä¡¼¥ë·²
¡¡WinAVR¤Ë¤ÏARM¥Þ¥¤¥³¥ó¤Î¥Ó¥ë¥É¤Ë¤â½ÅÊõ¤·¤¿utils¥Õ¥©¥ë¥ÀÆâ¤Îmake¤ò´Þ¤à
unix¥é¥¤¥¯¤Ê¥Ä¡¼¥ë·²¤¬¤¢¤Ã¤¿¤Î¤Ç¤¹¤¬ATMEL¸ø¼°¤«¤éÇÛÉÛ¤µ¤ì¤¿AVR Toolchain
¤Ë¤Ï¸ºß¤·¤Þ¤»¤ó¡ªÂå¤ï¤ê¤Ëavr-gcc¤ÈƱ¤¸¥Õ¥©¥ë¥À¤ËƱÅù¤Îµ¡Ç½¤Î¤â¤Î¤¬°ìÀÚ
¹çºâ¤Ö¤Á¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢»È¤¤¤ä¤¹¤µ¤ò¹Í¤¨¤ë¤ÈWinAVR¤Îutils¥Õ¥©¥ë¥À¤À¤±
Êݸ¤·¤È¤¤¤ÆµìÍè¤ÎWinAVR¤è¤í¤·¤¯¥Ó¥ë¥É»þ¤Ë¤Ï¤½¤³¤«¤émake¸Æ¤Ó½Ð¤»¤é¤ì¤ë¤è¤¦¤Ë
¤¹¤ì¤Ð¥â¥¢¥Ù¥¿¡¼¤À¤È»×¤¤¤Þ¤¹¡£
»ä¤ß¤¿¤¤¤Ê¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ó¥ë¥ÉÌîϺ¸þ¤±¤Ç¤¹¤¬¡¼¡ª

20121130ÄÉ¡§
¡¡WinAVR¤Ï¤â¤Ï¤ä»þÂåÃÙ¤ì¤Ç¤¹¡£WinAVR¤Ë¤Ä¤¤¤Æ¤¤¤¿utils¤ÎÂåÍѤÏ
¡¡¤³¤Á¤é¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

¡üEBI¤ÎSRAM¥â¡¼¥É
¡¡24¥Ó¥Ã¥È¥¢¥É¥ì¥¹¤Î¥¢¥¯¥»¥¹¤ÎÌäÂê¤Ï¥×¥í¥°¥é¥à¥á¥â¥ê¤Î»þ¤ÎÌäÂê¤À¤±¤Ç¤Ï¤Ê¤¯¡¢
¡¡¤â¤Á¤í¤óI/OÎΰè¤Ë¤âÇȵڤ·¤ä¤¬¤ê¤Þ¤¹¡£¸·Ì©¤Ë¸À¤¦¤ÈAVR Toolchain¤È¤Ï¤¢¤ó¤Þ¤·
¡¡´Ø·¸¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢ATMELÇÛÉÛ¤ÎXMEGA¤ÎEBI¤ÎSRAM¥¢¥¯¥»¥¹¤Î¥Ç¥â¤¬ÃÏÌ£¤Ë
¡¡¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤·¤Æ¤¤¤Æ¡¢pgm_get_far_address¤è¤í¤·¤¯24bit¥¢¥É¥ì¥¹ÍѤÎ
¡¡¥Þ¥¯¥í¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡
¡¡¤Í¤à¤¤¤µ¤óxmega»È¤Ã¤Æ¤³¤ì°Ê¾å¤ä¤ëµ¤¥Ê¥Ã¥·¥ó¥°¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤«¤é
¡¡¤¢¤ó¤Þ¤·´Ø·¸¤Ê¤¤¤Ç¤¹¤¬¡Ä

¡üdelay.h
¡¡AVR Toolchain¤ËÊѤ¨¤¿¤émakefile¤ÇÀµ¤·¤¯¥¯¥í¥Ã¥¯¼þÇÈ¿ô¤òÀßÄꤷ¤Æ¥Ò¥å¡¼¥º¤â
¡¡´Ö°ã¤Ã¤Æ¤Ê¤¤¤Î¤Ë°ÊÁ°¤È°ã¤Ã¤Æ¤Á¤ã¤ó¤Èư¤«¤Í¤§¡ª1¡ª¤È¤ªÃ²¤­¤ÎÊý¡¢utils/delay.h¤ò
¡¡¤è¡Á¤¯¸«¤Æ¤¯¤À¤µ¤¤¡£
¡¡HAS_DELAY_CYCLES¤È¤¤¤¦define¤ò1¤«¤é0¤Ë¤¹¤ë¤È¹¬¤»¤Ë¤Ê¤ì¤ë¤«¤â¡Ä¡£
¡¡¼ã¤·¤¯¤Ï»ä¤ß¤¿¤¤makefileÃæ¤Çavr-gcc¤ËHAS_DELAY_CYCLES=0¤ÎÄêµÁ¤òÅϤ·¤Æ
¡¡¤ä¤ë¤È¤è¤¤¤Ç¤¹¡£

or

¡¡¤³¤ÎÌäÂê¡¢°Õ³°¤Èº¬¤Ï¿¼¤¤¤è¤¦¤Ç¤¹¤Í¡Ä

¤¤¤í¤¤¤í»î¤¹5



°ÊÁ°¹ØÆþ¤·¤¿¤â¤Î¤ÎÁ´¤¯¿¨¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿PSoC5¤ò¾¯¤·¿¨¤ê¤Þ¤·¤¿¡£PSoC5¤ÏÃæ¤Î
CPU¥³¥¢¤¬MAX80MHz¤Çưºî¤¹¤ëCortex-M3¤¬ºÎÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£6·î°Ì¤ËPSoC5¤Î
ɾ²Á¥­¥Ã¥ÈPSoC 5 FirstTOUCH¤¬°Â²Á¤ÇÈÎÇ䤵¤ì¤¿¤Î¤Ç¡¢Cypress¤«¤éSRAM¤È
°ì½ï¤Ë¹ØÆþ¤·¤Þ¤·¤¿¡£


Åý¹ç³«È¯´Ä¶­¤ÎCPU¥³¥¢(Cortex-M3)¥×¥í¥°¥é¥à¤Î¥Ó¥ë¥É¤ÏGCC¤Ç¤¹¡£
CodeSourceryG++¤ò¸Æ¤Ó½Ð¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£


P.O.V.¤Ë¤è¤ëʸ»úɽ¼¨¤¬¥Ç¥â¥×¥í¥°¥é¥à¤¬½Ð²Ù»þ¤Ë½ñ¤­¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
ÅŸ»¤òÆþ¤ì¤Æ¤Ö¤ó¤Ö¤ó¤Õ¤ë¤È¥á¥Ã¥»¡¼¥¸¤¬½ç¼¡É½¼¨¤µ¤ì¤Þ¤¹¡£

º£¸½ºßC¸À¸ì¥½¡¼¥¹¤·¤«¤¤¤¸¤êÊý¤¬Ê¬¤«¤é¤Ê¤¤¤Î¤ÇCypress¤Î¥µ¥¤¥È¤Î
¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ç¤â¤ß¤Æ¥Ä¡¼¥ë¤Î»ÈÍÑÊýË¡¤ò³Ð¤¨¤Æ¤¤¤­¤Þ¤¹¤«¡Ä¡£
°Ê¾åÁ°¥Õ¥ê½ª¤ï¤ê¡ª



¤µ¤Æ¡¢¤æ¤Ã¤³¤Á¤ã¤ó¤ÎÃÂÀ¸Æü(¤À¤¤¤ÖÁ°¤Ç¤¹¤¬)¤â̵»ö½ª¤ï¤ê¡¢¾¯¤·Íî¤ÁÃ夤¤¿
¤Î¤Ç¤«¤Í¤Æ¤«¤é¹Í°ÆÃæ¤À¤Ã¤¿Ê£¿ô¤Î¥Õ¥©¥ó¥È¤ËÂбþ¤·¤¿FontX2¥É¥é¥¤¥Ðºî¤ê¤ò
¹Ô¤¤¤Þ¤·¤¿¡£
ProjectC3»á¤Î¥Ú¡¼¥¸¤ÎÆâÍÆ¤ò¸µ¤Ë°Ê²¼¤Î¤è¤¦¤Êư¤«¤·Êý¤Ë¤·¤Þ¤·¤¿¡£

1.Ⱦ³Ñ¡¦Á´³Ñ¤´¤È¤ËFontX2¥Õ¥¡¥¤¥ë¤Î¥Ø¥Ã¥À¡¼Éô¤Î¹½Â¤ÂΤòSRAM¾å¤Ë¹½À®¤¹¤ë¡£
2.³Æ¥Õ¥©¥ó¥È¤òÅÐÏ¿¤¹¤ë¤´¤È¤ËSRAM¹½Â¤ÂΤÎʬ¤À¤±¤òŽºŽÞŽØŽºŽÞŽØ¾ÃÈñ¡£
¡¡(¤È¤¤¤¦¤ï¤±¤ÇÈæ³ÓŪÂ絬ÌϤΥޥ¤¥³¥ó¾å¤Ç¤Î»ÈÍѤòÁÛÄꤷ¤Æ¤Þ¤¹)¡£
3.Ⱦ³Ñ¡¦Á´³Ñ¤È¤â¤Ë¥°¥í¡¼¥Ð¥ë¤ÊFontX2¤Î¹½Â¤ÂΥݥ¤¥ó¥¿¤òÃÖ¤­¡¢Ê¸»úÉÁ²è¤¹¤ë´Ø¿ô
¡¡·²¤ÏÁ´¤Æ¤³¤ì¤ò»²¾È¤¹¤ë¤è¤¦¤Ë¤¹¤ë¡£
¡¡»È¤¤¤¿¤¤¥Õ¥©¥ó¥È¤Çʸ»ú¤òÉÁ²è¤¹¤ëÁ°¤Ë¹½Â¤ÂΥݥ¤¥ó¥¿¤Ë¡Ö1.¡×¤ÇÅÐÏ¿¤·¤¿¹½Â¤
¡¡ÂΤΥ¢¥É¥ì¥¹¤òÅϤ¹¤è¤¦¤Ë¤¹¤ë¡£¤³¤¦¤¹¤ë¤³¤È¤Ç»ÈÍѤ·¤¿¤¤¥Õ¥©¥ó¥È¤ò´Êñ¤ËÀÚ¤ê
¡¡´¹¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
4.FontX2¦¤Î¥É¥é¥¤¥Ð¤Ï»ÈÍѤ¹¤ëFontX2¥Õ¥¡¥¤¥ë¤ÎÅÐÏ¿¤È¡¢Í׵ᤵ¤ì¤¿ascii/sjis
¡¡Ê¸»ú¥³¡¼¥É¤ËÂФ·¤Æ¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤Î¼ÂÂΤ¬¤¢¤ë¥¢¥É¥ì¥¹¤Î¥ª¥Õ¥»¥Ã¥È¤òÊÖ¤¹¡£

·è¤áÂǤÁ¤Ç¤ä¤ë¤Î¤Ê¤é¤ÐSRAM¤Ê¤¾¾ÃÈñ¤¹¤ëɬÍפϤʤ¤¤Î¤Ç¤¹¤¬¡¢ÈÆÍÑÀ­¤ò¾å¤²¤¿¤«¤Ã
¤¿¤Î¤Ç¤³¤ó¤Ê´¶¤¸¤Ë¤Þ¤È¤Þ¤ê¤Þ¤·¤¿¡£º£¤Ï¤Þ¤À¥Þ¥¤¥³¥ó¤Î¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¾å¤ËFontX2
¤Î¥Ç¡¼¥¿¤ò¤½¤Î¤Þ¤Þ¤Î¤Ã¤±¤Æ¤¤¤Þ¤¹¡£¤³¤Á¤é¤âÄÉ¡¹¤ÈÂçÍÆÎ̤ÎSPI-ROM¤ËÄɤ¤½Ð¤¹¤Ä
¤â¤ê¤Ç¤¹¡£

¤È¤¤¤¦¤ï¤±¤ÇSTM32¤äLPC2388¤ÎTFT±Õ¾½É½¼¨¥×¥í¥°¥é¥à¤Ë¤½¤ì¤òÁȤ߹þ¤ß¤Þ¤·¤¿¡£
¥¿¥Ã¥Á¥Ñ¥Í¥ë¤ÎÀßÄê¤ÎºÝ¤Ë»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£


Åö¤¿¤êÁ°¤Ç¤¹¤¬¥Õ¥©¥ó¥È¤½¤Î¤â¤Î¤ÏƱ¤¸¤Ê¤Î¤Ç°ÊÁ°¤Î¤È¸«¤¿ÌܤÏÊѤï¤ê¤Þ¤»¤ó¤±¤É¤Í¡£
ɽ¼¨¤Ë»ÈÍѤ·¤Æ¤¤¤ë¥Ç¥Ð¥¤¥¹¤ÏSTM025QVT-001¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£²¿µ¤¤Ë»ÈÍѲÄǽ¤Ê
MCU¥Ð¥¹Àܳ¥¿¥¤¥×¤Î¥Ç¥£¥¹¥×¥ì¥¤¥â¥¸¥å¡¼¥ë¤Î¼ïÎà¤â¤É¤ó¤É¤óÁý¤ä¤·¤Æ¤¤¤Ã¤Æ¤Þ¤¹¡£



¤¢¤È¡¢IJG JPEG¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤¿jpeg¥Õ¥¡¥¤¥ë¤Î¥Ç¥³¡¼¥É¤Î¼Â¸³¤Ê¤ó¤«¤â»î¤ß¤Æ
¤¤¤Þ¤¹¡£Æ±¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤¿sirius506»áºîÀ®¤Împ3¥×¥ì¡¼¥ä¡¼¤Î¥Õ¥©¥È¥Õ¥ì¡¼¥à
Éô¤ò¤½¤é»á¤¬SH-2A¸þ¤±¤ËÍøÍѤµ¤ì¤¿¤â¤Î¤ò¤µ¤é¤Ë»²¹Í¤Ë¤µ¤»¤Æ¤â¤é¤¤¤Þ¤·¤¿¡£

¤¤¤í¤¤¤í»î¹Ôºø¸í¤·¤Æ¤è¤¦¤ä¤¯¥Ó¥ë¥É¤¬Ä̤俤ΤǤ¹¤¬¥Ð¥¤¥Ê¥ê¥µ¥¤¥º¤¬220kbyte¤â
ËĤì¾å¤¬¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¥Õ¥é¥Ã¥·¥å¥á¥â¥êÍÆÎ̤¬MAX256kByte¤·¤«¤Ê¤¤STM32F107
·Ï¤Ë¤ÏÅþÄìºÜ¤ê¤Þ¤»¤ó¡£¤È¤¤¤¦¤ï¤±¤Çjpeg¥Ç¥³¡¼¥Éµ¡Ç½¤ò¾è¤Ã¤±¤ë¤Î¤Ï¥Õ¥é¥Ã¥·¥å
ÍÆÎ̤¬Ë­ÉÙ¤ÊLPC2388¤äSTM32 Primer2¸þ¤±¤Î¤ß(¾­ÍèŪ¤Ë¤ÏLPC1769¤â)
¤Ë¤Ê¤ê¤½¤¦¤Ç¤¹¡£

QVGA¥µ¥¤¥º¤Î¾ì¹çLPC2388¤Ç¤Ïjpeg¥Ç¥³¡¼¥É¤ËɬÍפʺÇÄã¸Â¤ÎRAM¤Ï
1024*35=35840Byte
°Ê¾åɬÍפǤ·¤¿¡£RAM¤â¤½¤ì¤Ê¤ê¤Ë¶ô¤¦¤è¤¦¤Ç¤¹¡£¤½¤ÎºÝɸ½à´Ø¿ômalloc¤¬heapÎΰè¤ò
»ÈÍѤ¹¤ë¤Î¤Ç¥¹¥¿¡¼¥È¥¢¥Ã¥×¤ò¤¤¤¸¤êmakefileÆâ¤Ç»ÈÍÑÎ̤òÌÀ¼¨¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Þ¤·¤¿¡£



ŽºŽÂ

ŽÒ޶

ŽÜŽ³Ž¿
¤ä¤Ã¤Ñ¥Ç¥³¡¼¥É->ÉÁ²è¤Ë¤Ï¿¾¯»þ´Ö¤«¤«¤ê¤Þ¤¹¤Í¡£Â¾¤Ë¤âIJG JPEG¥é¥¤¥Ö¥é¥ê¤Ï
¥ê¥µ¥¤¥ºµ¡Ç½¤Ê¤ó¤«¤â¤¢¤Ã¤Æ¥Ô¥¯¥»¥ë¥µ¥¤¥º¤¬Â礭¤¤¤â¤Î¤Ç¤â½Ì¾®¤·¤Æ¤¯¤ì¤Þ¤¹¡£
º£²ó»ÈÍѤ·¤¿¾®Æ°Êª¤¿¤Á¤Î²èÁü¤ÏÂçºå³¤Í·´Û¤Ç»£±Æ¤·¤¿¥³¥Ä¥á¥«¥ï¥¦¥½¤¿¤Á¤Ç¤¹¡£
¤Þ¤ÀÁ´¤¯¼ê¤òÉÕ¤±¤Æ¤Þ¤»¤ó¤¬120MHz¤Çư¤¯LPC1769¤ÇƱ¤¸¤³¤È¤ä¤ë¤È¤É¤ó¤À¤±Á᤯
¥Ç¥³¡¼¥É¤Ç¤­¤ë¤«¤Á¤ç¤Ã¤È³Ú¤·¤ß¤Ç¤¹¡£



ºÇ¸å¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢¾¯¤·Á°¤«¤éTFT-LCDShield³«È¯¤ÎÀÞ¤Ëtaobao¤Ç±Õ¾½¥â¥¸¥å¡¼¥ë
¤Ê¤É¤ò¤¤¤í¤¤¤í¹ØÆþ¤·¤Æ¤¤¤Þ¤·¤¿¡£¤½¤ÎÃæ¤Ç¤Ò¤È¤­¤ïÌÜΩ¤Ã¤Æ¤¿3.5inch¡¢
320x480¤ÎÂç²òÁüÅÙ¡¢¤½¤ì¤Ç¤¤¤Æ°·¤¤¤ä¤¹¤¤i8080¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÇÀܳ¤Ç¤­¤ë
±Õ¾½¥â¥¸¥å¡¼¥ë¤ò¾Ò²ð¤·¤Þ¤¹¡£



¥Ç¥«¥¤¡ª

¤Ç¡¢¥Ç¥«¥¤¡ª

72MHz¶îư¤ÎSTM32F107VCT6¤À¤ÈSD¥«¡¼¥É¤«¤é320x480,24bit¤Îɸ½àŪ¤ÊWindowsBMP
¥Õ¥¡¥¤¥ë¤Î°ìË糨¤òÆÉ¤ß¼è¤êɽ¼¨¤¹¤ë¤Î¤Ë³Ý¤«¤ë»þ´Ö¤ò¬Äꤷ¤¿¤È¤³¤íÌó360mSec³Ý
¤«¤ê¤Þ¤·¤¿¡£
(Á´²èÌ̾õî->SD¥«¡¼¥ÉÆÉ¤ß½Ð¤·->RGB¥Ç¡¼¥¿24bit->16bitÊÑ´¹->GPIOžÁ÷)


ÉáÄ̤³¤ì¤¯¤é¤¤¤Î²òÁüÅ٤ˤʤë¤ÈRGB¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤·¤«¤Ê¤¤¤Î¤Ç¤¹¤¬¤³¤Î
¥â¥¸¥å¡¼¥ë¤Ïi8080¤ÎMCU¥Ð¥¹¤ÇÀܳ¤Ç¤­¤ë¥³¥ó¥È¥í¡¼¥éIC(ILI9481)¤¬Æâ¢¤µ¤ì¤Æ
¤¤¤ÆAVRÅù¤Î¥ï¥ó¥Á¥Ã¥×¥Þ¥¤¥³¥ó¤Ç¤â¼ê·Ú¤Ë°·¤¨¤Þ¤¹(¤¿¤À¤·16bit¥Ð¥¹¶¯À©)¡£
¤Þ¤À¥¿¥Ã¥Á¥Ñ¥Í¥ë¤¬ÅëºÜ¤µ¤ì¤¿¥â¥Ç¥ë¤Ï°ìÈ̤˽вó¤Ã¤Æ¤¤¤Ê¤¤¤â¤Î¤Î¡¢´Ê°×¤Ç
¥Õ¥©¥È¥Õ¥ì¡¼¥à¤òºîÀ®¤¹¤ë¤Î¤Ê¤é¸«±É¤¨¤¬¤¢¤ë¤â¤Î¤¬¤Ç¤­¤ë¤È»×¤¤¤Þ¤¹¡£



¤ª¤ä¡©aitendo¤Ë¤â»÷¤¿¤è¤¦¤Ê¤â¤Î¤¬¡Ä¡©(ËÀÆÉ¤ß)
ÄÉ¡§»ä¤Î¤ÏFPC¤Î·Á¾õ¡¦¥Ô¥ó´Ö³Ö¡¦³°´Ñ¤¬Á´¤¯°ã¤¦ÊÌʪ¤Ç¤¹¡ª

XMEGA¤ò»È¤Ã¤Æ¤ß¤ë2

NG¥ï¡¼¥ª¡§ARM¤½¤Î¾32¥Ó¥Ã¥È¥Þ¥¤¥³¥ó
¢¬¤Í¤à¤¤¤µ¤ó¤¬Í¾·×¤Ê»ö¤ò¸À¤ï¤Ê¤¤¤¿¤áÍÑ



¡Ä¤µ¤Æ¡¢XMEGA¤ò»È¤¨¤ë¤â¤Î¤Ë¤¹¤Ù¤¯¾¯¤·¤º¤Ä¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤ò¸Ç¤á¤Æ¤­¤Þ¤·¤¿¤¬¡¢
º£¸½ºß¤Þ¤À¤Þ¤À¼êõ¤êÃʳ¬¤Ç¤¹¡£


¢¬ÆÍ¤Ã¹þ¤ß¤É¤³¤íËþºÜ¤Ê²èÁü

»ä¤ÎXMEGAÍѤγ«È¯´Ä¶­¤Ï¥³¥ó¥Ñ¥¤¥é¤¬WinAVR,¥é¥¤¥¿/¥Ç¥Ð¥Ã¥¬¤¬
JTAGICEmk2¤Ç¤¹¡£¼ç¿Í¤Î°äʪ¤«¤é¶¯Ã¥¤·¤¿¤«¤é¾ù¤ê¼õ¤±¤¿JTAGICEmk2¤Ï
¥Ï¡¼¥É¥¦¥¨¥¢¤Î¥ê¥Ó¥¸¥ç¥ó¤¬¸Å¤¯¡¢PDI¥â¡¼¥É¤¬»ÈÍѤǤ­¤Ê¤¤¤¿¤áJTAG¥â¡¼¥É
¤Ç¤·¤«¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó!!

¤ó¤Ç¤â¤Ã¤Æ²¿¤Ç¥é¥¤¥¿¤È½ñ¤­¹þ¤ß¥¢¥À¥×¥¿¤ò¤Ä¤Ê¤°¥±¡¼¥Ö¥ë¤¬FPC¤¸¤ã¤Ê¤¤¤«¤È¤¤¤¦¤È
FPC¥³¥Í¥¯¥¿¤¬Ž¶ŽÞŽÊŽÞ޶ŽÞŽÊŽÞ¤Ë¤Ê¤Ã¤Æ¤ÆÉáÄ̤ÎÅÅÀþ¤Ç̵Íý¤ä¤ê·Ò¤²¤Æ½¤Éü¤¹¤ë¤Þ¤Ç½ñ¤­¹þ¤ß
¤¹¤éËþ­¤Ë¤Ç¤­¤Ê¤«¤Ã¤¿¤«¤é¤Ç¤¹¤èŽ¸Ž¿Ž§!!
¡Ä¤Ï¤¡¤Ï¤¡¡Ä¤Þ¤¡¥³¥Þ¥ó¥É¥é¥¤¥ó¥Ä¡¼¥ë»È¤¨¤ë¤«¤é¤¢¤Þ¤êÉÔÊØ¤Ë¤Ï´¶¤¸¤Þ¤»¤ó¤¬¡Ä¡£


¤³¤Î´Ä¶­¤Ç¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¤Ë¾Æ¤­¤³¤ó¤ÀFONTX2¥Õ¥¡¥¤¥ë¤äBMP¥Õ¥¡¥¤¥ë¤ò
ɽ¼¨¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤Þ¤Ç½ÐÍè¤Þ¤·¤¿¡£AVR»È¤¤¤ÎÊý¤Ï¤´Â¸ÃΤ«¤È»×¤¤¤Þ¤¹¤¬
¥³¥ó¥Ñ¥¤¥é¤äAVR¤Î¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤½¤Î¤â¤Î¤Î¤¤¤í¤ó¤ÊÀ©Ìó¤Çɽ¼¨¤Ç¤­¤ë¤è¤¦¤Ë
¤Ê¤ë¤Þ¤ÇÆñµ·¤·¤Þ¤·¤¿¡£¤·¤«¤·°ìÅÙÆ½±Û¤¨¤Æ°·¤¤Êý¤ï¤«¤ë¤È¤â¤¦¤¢¤È¤Ï³Ú¤Ç¤·¤¿¡Ä


¢¬BMP¥Õ¥¡¥¤¥ë¤òɽ¼¨¤·¤¿¾å¤ËFONTX2(Èþºé¥Õ¥©¥ó¥È)¤ÇÀÖʸ»úÆ©²áɽ¼¨¤·¤¿¤È¤³¤í¡£
¡¡°ìÉô¸í»ú¤¬¤¢¤Ã¤Æ¥¢¥ì¤ÊÉôʬ¤¬Éú¤»»ú¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤Þ¤¹¤¬Ìµ³²¤Ç¤¹(ËÀ
¡¡¥Ð¥ì¥ó¥¿¥¤¥ó¤À¤Ã¤¿¤·¡ª


¡Ä¤µ¤Æ¡¢¤³¤Ã¤«¤éÀè¤É¤¦¤¹¤ë¤«¤ò¹Í¤¨¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢EBI¤ò»È¤Ã¤Æ
SRAM¤È¤«·Ò¤²¤ë¤³¤È¤â¹Í¤¨¤Þ¤·¤¿¡£XMEGA¤Ç»ÈÍѤǤ­¤ëEBI¤ÏALE̵¤·¤Ç¤âSRAM¤Ë
Àܳ¤Ç¤­¤ë¤Ï¤º¤Ç¤¹¤¬¸½¹Ô¤ÎXMEGA¤Î¥â¥Ç¥ë¤Ç¤ÏEBI¤ò¹½À®¤¹¤ë¤¿¤á¤ËɬÍפʤÎ
°ìÉô¤Î¥Ð¥¹(PORTL)¤¬ÊªÍýŪ¤Ë¸ºß¤»¤º¡¢¼Â¼Á¾åALE»È¤ï¤Ê¤¤¤ÈÂçÍÆÎ̤ÎSRAM¤ò
°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤óŽ¸Ž¿Ž§¡ª
¡Ä޵ŽÎŽÎ»ä¤Ã¤¿¤é¡Ä¼ºÎé¡Ä
SDRAM¤Ï¤â¤Ã¤È¤Ò¤É¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤ë¤é¤·¤¤¤Ç¤¹¤Í¡Ä¡£

¤Ç¤âLCD¤ò·Ò¤²¤ë¤¯¤é¤¤¤Ê¤éALE̵¤·¤Ç¤â½½Ê¬¤¹¤®¤ë¤¯¤é¤¤ÏŤ¨¤ë¤Î¤Ç¡¢Á°²ó¤Î
±Õ¾½¤òÀ褺EBI¤Ç·Ò¤²¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤È¤³¤í¤«¤é¤Ï¤Â¤á¤Þ¤¹¡Ä¡£
¤½¤ì¤Èº£»×¤¤¤Ä¤­¤Þ¤·¤¿¤¬MAIÅŻҤµ¤ó¤è¤ê¹ØÆþ¤·¤¿¹â®SRAMÉÕ¤­FPGA¥Ü¡¼¥É¤ò
»à¢¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¤³¤ì¤òÍøÍѤ·¤Ê¤¤¼ê¤Ï̵¤¤¤Ç¤¹¤Í¡Ä¡ª
ÃúÅÙfenrir»á¤¬cblsrv¤òISE11.x¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¹¹¿·¤·¤Æ¤¯¤ì¤Þ¤·¤¿¤Î¤Ç¡Ä
¤Í¤à¤¤¤µ¤óº£ÅÙ¤³¤½Ëܵ¤¤À¤¹¡ª¡ª


¢¬¤ä¤ë¤ä¤ëº¾µ½

Go to top of page