ǰÑÔ
ĿǰǶÈëʽ¿ª·¢Æ½Ì¨°´ÕÕÐÔÄÜ¿ÉÒÔ·ÖΪÁ½À࣬һÖÖÊÇCPUÖ»ÓÐÊýÊ®Õ׵ĵ¥Æ¬»ú£¬Ò»ÖÖÊDZȽϸ߼¶µÄ¿ÉÒÔÅÜLinuxÉõÖÁAndroidµÄǶÈëʽƽ̨£¨ÆäʵiPhone¡¢AndroidÊÖ»ú¶¼ÊôÓÚǶÈëʽ²úÆ·£©¡£
ºóÕßÒ»°ã»ùÓÚLinux/unix²Ù×÷ϵͳ×ö½»²æ±àÒë,µ«ÊÇǰÕßÍùÍù¸ü¶àµÄÊÇÔÚKeilÉÏ×ö¿ª·¢£¬µ«ÓÉÓÚ±¾È˸öÈ˹ØÏµ£¬±È½Ï²»Ï²»¶Keil½çÃæ£¬ËùÒÔÒ»°ãÔÚ×öǶÈëʽ¿ª·¢µÄʱºò£¬¶¼»áÓÅÏÈ¿¼ÂÇÊÇ·ñÓÐLinux/unixÀàµÄSDK£¨Ö¸°üº¬±àÒ빤¾ß£©¡£µ«ËƺõMac
OSXÉÏ×öǶÈëʽ¿ª·¢µÄÈËÔ±½ÏÏ¡ÉÙ£¬hum...Òò´Ë×ÊÁÏÒ²»áÏà¶Ô½ÏÉÙ¡£
±¾ÎÄËù¾ÙÀý×Ó£¬ÊÇǧǧÍòÍòÖÖǶÈëʽоƬµÄÒ»ÖÖ£¬²¢²»¾ß±¸ÆÕ±éÐÔ£¬µ«¶ÁÍê±¾ÎÄÓ¦¸ÃÒ²»áÈÃÄãÂÔÓÐÊÕ»ñ¡£
ϵͳ»·¾³
²Ù×÷ϵͳ£º OS X EI Capitan £¨10.11.5£©
Ó²¼þƽ̨£º nRF51822 £¨Nordic BLE оƬ£©¿ª·¢°å
ʲôÊÇǶÈëʽ¿ª·¢ £¿
»ùÓÚǶÈëʽƽ̨Ëù½øÐеĵײ㿪·¢£¬ÎÒÃdzÆÖ®Îª¡°Ç¶Èëʽ¿ª·¢¡±¡£
ÄÇôÏÖÔÚ´«ËµÖеijÌÐòÔ³£¬ÄÄЩԳÀàÊÇÊôÓÚǶÈëʽ¿ª·¢µÄÄØ£¿
¾Ù¸öÁÐ×Ó£ºËäÈ»ÊÖ»úÊôÓÚǶÈëʽÉ豸£¬µ«Ä¿Ç°ÈËÊýÖÚ¶àµÄAPP¿ª·¢Õß²»ÊôÓÚǶÈëʽ¿ª·¢£¬¶øÊÇÊôÓÚÓ¦Óÿª·¢ÈËÔ±£¨ÒòΪËûÃǶ¼ÊÇ»ùÓÚÊÖ»ú²Ù×÷ϵͳ½øÐбà³ÌµÄ£©¡£µ«ÊÖ»ú³§¼ÒÖÐÄÇЩ¿ª·¢ÊÖ»úµ×²ãÇý¶¯ºÍµ×²ãÓ¦ÓõÄÈËÔ±ÔòÊôÓÚǶÈëʽ¿ª·¢¡£
Ŀǰ£¬Òò½ü¼¸ÄêÒÆ¶¯»¥ÁªÍøµÄ´óÁ¦·¢Õ¹£¬Ê¹µÃ WebÔ³ ºÍ APPÔ³ ×åȺ×îΪÅÓ´ó¡£
ʲôÊǽ»²æ±àÒ룿
¼òµ¥À´Ëµ£¬ÔÚCÓïÑÔ£¨°üÀ¨µ«²»ÏÞÓÚ£©±àÒë¹ý³ÌÖлá·ÖΪËĸö½×¶Î£º Ô¤´¦Àí ->
±àÒë -> »ã±à -> Á´½Ó

µ«ÊÇÔÚÒÔÉϹý³ÌÖУ¬ÐèÒªÕ¼Óá°´óÁ¿×ÊÔ´¡±£¬ÔÚǶÈëʽÉ豸£¨Ç¶ÈëʽÉ豸µÄÉè¼ÆÒª¾÷Ö®Ò»¾ÍÊÇÄÜÊ¡ÔòÊ¡£©Öв¢²»¾ß±¸¸Ã×ÊÔ´£¨Èç±àÒëÆ÷¡¢×ã¹»¿ìµÄCPU¡¢ÄÚ´æµÈ£©£¬ËùÒÔÐèÒª½èÖúÎÒÃǵÄPCƽ̨½øÐбàÒë¡£ÕâÖÖÔÚÒ»ÖÖÆ½Ì¨±àÒ룬ÁíÒ»ÖÖÆ½Ì¨ÔËÐеıàÒ룬ÎÒÃdzÆÖ®Îª½»²æ±àÒë¡£

³ÌÐòÊÇÔõÑù±»´´ÔìµÄ£¿
ÔÚ³ÌÐò±»´´Ôìµ½Óû§ÊÖÉϵĹý³ÌÖУ¬³ýÁËϵͳÌṩµÄAPIs£¬³ÌÐòÔ±ÐèÒªÈýÖֱز»¿ÉÉÙ¹¤¾ß£º
ÊäÈ빤¾ß£º´úÂë±à¼Æ÷£¬Èç Vim£¬Notepad++¡¢Sublime
±àÒ빤¾ß£º±àÒëÆ÷£¬¿ÉÒÔ½«ÈËÀàËùдµÄ´úÂëת»¯Îª»úÆ÷Äܶ®µÄ¶þ½øÖÆÎļþ£¬Èç GCC¡¢Clang¡¢Javac
²âÊÔ¹¤¾ß£º³ÌÐòËùÔËÐеĻ·¾³£¬ÈçiPhone¡¢Android¡¢PC£¨Linux¡¢Mac¡¢Windows£©
¼¯³ÉÁËÒÔÉÏǰÁ½Ï¾ßµÄ¹¤¾ß£¬ÎÒÃdzÆÖ®ÎªIDE£¬ÈçXcode¡¢Visual Studio ¡¢Eclipse¡¢Keil¡£
nRF51822¿ª·¢¹¤¾ß
Èç¹ûÄãÏëÒª¸úËæ±¾ÎÄÒ»ÆðʵÑ飬Ê×ÏÈ£¬ÄãÐèÒª¹ºÈëÒ»¿énRF51822¿ª·¢°å£¬ÏñÕâÑùµÄ£º

±¾ÎÄÖ÷Òª½éÉÜMacÉϵÄÈí¼þ¿ª·¢¹¤¾ß£¬ÔÚnRF51822¿ª·¢¹ý³ÌÖУ¬Èí¼þÎÒÃÇÐèÒªSDK¡¢±àÒëÆ÷ÒÔ¼°J-LinkÇý¶¯Èí¼þ£º
nRF5-SDK£ºSDKÓɳ§ÉÌÌṩ£¬µã»÷½øÈë¹Ù·½ÍøÕ¾ºó£¬Ñ¡ÔñĿǰ×îеÄ11.0.0°æ±¾½øÐÐÏÂÔØ£º

±àÒëÆ÷£ºÏÂÔØºÃ¹Ù·½SDKºó£¬´ò¿ªSDKÖеÄMakefile.posixÎļþ£¬¿ÉÒÔ¿´µ½¸Ã°æ±¾SDKËùÓõÄgcc±àÒëÆ÷°æ±¾¡£

½øÈëµ½gcc-arm¹ÙÍøºó£¬Ñ¡ÔñÏà¶ÔÓ¦°æ±¾µÄ±àÒëÆ÷ÏÂÔØ£¨Ïà¶ÔÓÚLinuxºÍWindowsµÄÏÂÔØÁ¿£¬Mac°æ±¾ºÃ²Òµ...
=_=)

J-LinkÇý¶¯£ºnRF51822²ÉÓà J-Link½øÐгÌÐòÏÂÔØ£¬ËùÒÔÎÒÃÇÐèÒªÏÂÔØMac°æµÄJ-LinkÇý¶¯¡£

nRF51822»·¾³´î½¨¼°²âÊÔ
°²×°±àÒëÆ÷
½«ÏÂÔØºÃµÄ±àÒ빤¾ßÁ´½âѹµ½ /usr/local Ŀ¼Ï£º
sudo tar -jxvf gcc-arm-none-eabi-4_9-2015q1-20150306-mac.tar.bz2 /usr/local/ |
Ö´Ðкó²é¿´ÊÇ·ñ³É¹¦£º

±àÒëÀý×Ó
½øÈëµ½ÏÂÔØºÃµÄSDKÖУ¬ÕÒÒ»¸öÀý×Ó£¬È磺
cd $(nRF_51SDK)/examples/ble_peripheral/ble_app_beacon/pca10028/s130/armgcc make all |
±àÒëÍê³Éºó£¬»áÉú³ÉÏà¶ÔÓ¦µÄbinÎļþ£º

ÏÂÔØ¹Ì¼þÖÁ¿ª·¢°å
J-Link·½Ê½Ð´Èë
ÔÚ°²×°ÍêJ-Link_for_mac°æ¹¤¾ßºó£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÏµÍ³ÖÐÒѾÓÐÁËÒÔÏÂÃüÁîÐй¤¾ß£º

ÀûÓÃÃüÁîÐнøÈëJ-LinkÌṩµÄshellÖУº
JLinkExe -device nrf51822_xxaa -if swd -speed 4000 |

-device Ö¸¶¨ÁËоƬÀàÐÍ£¬J-LinkÖ§³ÖµÄ¿ª·¢°åÀàÐÍ¿ÉÔÚjlink_supported_devices²éѯ¡£
ÊäÈëÉÕ¼ÃüÁ
J-Link >loadbin s130_nrf51_2.0.0_softdevice.hex 0 J-Link>loadbin nrf51422_xxac_s130.hex 0x1B000 J-Link>r J-Link>go |
loadbinÊÇÉÕ¼µÄÃüÁ*.hexÊÇÉÕ¼µÄ¹Ì¼þ£¬0x1B000ÊÇÉÕ¼µØÖ·¡£rÊÇreset£¬goÊÇÆô¶¯¡£
µ±flash³öÏÖ´íÎóʱ£¬ÎÒÃÇÐèÒª²Á³ýfalsh£¬´ËʱÎÒÃÇÒªÓÃMagic·½·¨£¬·Ö±ðÍùÁ½¸öµØÖ·ÖÐдÈë1ºÍ2£º
J-Link>w4 4001e504 2 J-Link>w4 4001e50c 1 |
¿ÉÒÔÔÚMakefile.posixÖÐÌí¼ÓÈçÏÂÃüÁÈñàÒëÍê³Éºó×Ô¶¯ÉÕ¼£º
GNU_INSTALL_ROOT := /usr/local/gcc-arm-none-eabi-4_8-2014q2 GNU_VERSION := 4.8.3 GNU_PREFIX := arm-none-eabi GDB_PORT_NUMBER := 9992
FLASH_START_ADDR = $(shell $(OBJDUMP) -h \
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).out
-j .text | grep .text | awk '{print $$4}')
JLINK_OPTS = -device nrf51822 -if swd -speed
4000
JLINK_GDB_OPTS = -noir
JLINK = JLinkExe $(JLINK_OPTS)
JLINKD_GDB = JLinkGDBServer $(JLINK_GDB_OPTS)
flash-jlink: flash.jlink
$(JLINK) flash.jlink
flash.jlink:
printf "loadbin $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_FILENAME).bin
$(FLASH_START_ADDR)\nr\ng\nexit\n" > flash.jlink
erase-all: erase-all.jlink
$(JLINK) erase-all.jlink
erase-all.jlink:
# Write to NVMC to enable erase, do erase all,
wait for completion. reset
printf "w4 4001e504 2\nw4 4001e50c 1\nsleep
100\nr\nexit\n" > erase-all.jlink
run-debug:
$(JLINKD_GDB) $(JLINK_OPTS) $(JLINK_GDB_OPTS)
-port $(GDB_PORT_NUMBER)
.PHONY: flash-jlink flash.jlink erase-all erase-all.jlink
run-debug |
ÀûÓùٷ½ÌṩµÄÃüÁîÐй¤¾ß
ÔÚ ¹Ù·½¹Ì¼þÏÂÔØÁбíÖÐÌṩÁËÃüÁîÐй¤¾ß£ºnrfjprog and mergehex¡£

ÆäÖÐnrfjprogÓÃÓÚÉÕ¼³ÌÐò£¬mergehexÓÃÓںϲ¢hexÎļþ¡£°²×°ºÃnrfjprogºÍmergehex¹¤¾ßºó£¬ÎÒÃÇÖ»ÐèÒªÔÚÉÏÊöµÄ¹¤³ÌĿ¼Ï£¬ÊäÈ룺
make flash #ÉÕ¼ӦÓóÌÐò make flash_softdevice #ÉÕ¼ϵͳÄÚºË |
¼´¿ÉÍê³É¹Ì¼þµÄÉÕд¡£
Íê
ÖÁ´Ë£¬nRF51822 ÔÚMacÖеĿª·¢»·¾³´î½¨Íê±Ï¡£
|