Note: Nordic nRF52/BLE 5.0 Long range and link limitation

用 SoftDevice S140時 (nRF52840) 上面 phy 有 BLE_GAP_PHY_CODE (S=8, 125Kbps), 可以把 phy 的傳輸調變往下降後再延長距離, 目前只有支援 2M/1M/125三種資料調變率

在github 上面的code 展示不同的phy 跟選項設定影響

menu.c <– 這裡面是幾組 test_parameters

mainc.c <– 這裡面的 set_all_parameters () 有相關設定

而Link limitation 是SDK 本身限制, 因為從BT 4.2 開始BLE 本身規格沒有限制連線數量, 這取決於memory resource, 不過早期的SDK上限應該是15, 但是官方現在寫 20, BLE 網路本身需要先有一個central node, 然後 peripheral連結到 central 上, 而BT 4.2 後可以有 Multi Role 就是一個node 本身既是 central 也是 peripheral 同時存在, peripheral 本身可以連結多個 central 因此這讓 mesh成為可能

ref.

廣告

Note: Nordicsemi nRF52 somethings for Bootloader

開始要拿Nordic 的 nRF52840 來做些實際可以賣錢的案子, 要先把DFU/OTA 搞定下面是某個 example 的 .ld(link description) 的內容,這描述了memory 的layout

MEMORY
{
  UNPLACED_SECTIONS (wx) : ORIGIN = 0x100000000, LENGTH = 0
  uicr_mbr_params_page (wx) : ORIGIN = 0x00000ffc, LENGTH = 0x00000004
  uicr_bootloader_start_address (wx) : ORIGIN = 0x00000ff8, LENGTH = 0x00000004
  mbr_params_page (wx) : ORIGIN = 0x000fe000, LENGTH = 0x00001000
  bootloader_settings_page (wx) : ORIGIN = 0x000ff000, LENGTH = 0x00001000
  RAM (wx) : ORIGIN = 0x20000000, LENGTH = 0x00040000
  FLASH (wx) : ORIGIN = 0x00000000, LENGTH = 0x00100000
}

下面是新的配置圖, 從 nRF15.3.0 的softdevice 章節節錄, 因為現在Nodric 的chip 變多 memory 也有一些變化所以不標注實際的位址值

而下是早期的 SDK 內的Memory layout for leagacy DFU update

SoftDevice 是BLE/ANT 的protocol stack library 只給.hex 跟API header file

802.15.4 的PHY & MAC 與 SoftDevice 無關. 但是可以兩者可以合併使用在軟體內做multiprotocol 或切換, 而802.15.4 上層可以是用OpenThread or Zigbee

Memory map
from Nordic nRF52840

Note: nRF52840 with SecureDFU

新的Project 打算用Nordic semi 的 nRF52840 做個東西, 在Ubuntu 下面有幾個要注意的

我用的是 ARM GCC 因為之前習慣是自己下載 .tgz 解開設定 CROSS_COMPILER PATH

但是 Nordic 的 nRF5 SDK設計 不吃這個環境變數, 吃 GNU_INSTALL_ROOT 這個,
另外就是SecureDFU 需要用到 micro-ecc 這個加密函式庫, 我測試的 nRF5 v15.2.0 直接到external/micro-ecc 下會有build-all.sh 他會直接拉 github 上的source code 跟 make

然後build 的過程又出現error  說debug public key 不能用 要透過 nrfutil python tools 去replacement 本來想找是否有build DEBUG的方法 但是一時沒找到

Update:  to add  the below into sdk_config.h of project, for keep use debug public key

#ifndef NRF_DFU_DEBUG_VERSION
#define NRF_DFU_DEBUG_VERSION
#endif

後來透過上面關鍵字 才找到 下面參考資料

update: Nordic 與Segger 有一個合約提供免費的Embedded Studio 使用, 所以開發版上是J-link SDK 裡面的範例除了 ARM5(Keil?)/ARM GCC/IAR 外, 還有這個支援
ref.
my envsetup.sh
Segger J-link software (ubuntu use .deb format for dpkg)
Segger Embedded Studio for Nordicsemi free

Note: MQX411 with FRDM-K64F Starting guide

  1. download your toolchain from https://launchpad.net/gcc-arm-embedded, currently support gcc 4.8 2014q1update(MQX tested on this version, see MQX411 release note ), but we support others version gcc 4.8 2014q3update and gcc 4.9 2014q4
  2.  git clone https://github.com/KunYi/MQX411.git
  3. modify GCC_REV and TOOLCHAIN_ROOTDIR in MQX411/build/comm/global.mak or MQX411/envsetup.sh to your toolchain version & location
  4. run ‘source envsetup.sh’ or  ‘.  envsetup.sh’
  5. cd MQX411/build/frdmk64f/make
  6. run ./build_gcc_arm.sh then waiting until finish, the step for compiling kernel code
  7. cd MQX411/demo/web_hvac/build/make/web_hvac_frdmk64f
  8. run ./build_gcc_arm.sh then waiting until finish, the step for compiling application & link kernel
  9. cd ./gcc_arm/intflash_release
  10. elf2bin web_havc_frdmk64f  # we will get web_havc_frdmk64.bin
  11. cp2med web_havc_frdmk64 # will download the  binary file to FRDM-K64F

Note: A Remote Programable Digital Input/Ouput module

這是一個用 8051實作使用 UART/RS485通訊的Keil C code的案例, 目前這個簡單的模組已經在某個大眾運輸系統中, 還算穩定的運行超過 10 years. 這個code 比較值得一提的是利用切換UART mode, 來避免當使用8051在RS485使用時需要去 delay 1bits的時間才能切換 Direction Pin. (將模式從 N, 8, 1 變成 N, 9, 1 , 因為8051的 TX Interrupt 是在stop bit 發出時同時 trigger 這時 stop bit 並未完成, 直接切 RS485的direction pin 的話, 會造成該 byte的 frame error!)

硬體是簡單的 8031 + ROM + TTL (最早的是 8031+ROM+PIC 8255, 但是應用上8255常發生latch up 導致損毀, 成本也高), 後來改用簡單的 GAL + TTL去做8255的基本功能模擬

基本的細節都在 CM.H這個檔案內

click here to download the project source code

or get from github

因為之前有寫過 8051 UART C Version 有些人光看該code, 好像還是不懂怎樣用, 所以現在放出一個簡單又完整的專案, 但是這個專案因為是比較早期寫的所以某些 code style會多少不一致, 但是思路是一致的.

Update : avrdude-gui with configurable feature

new modify version to support configuration file.

download it (win32 & modify files)

or https://github.com/KunYi/new-avrdude-gui/releases


avrdude-gui.conf : configuration files

<?xml version="1.0″ encoding="utf-8″?>
<configuration>
<programmerlist>
<programmer name="acmini">
</programmer>
<programmer name="alf">
</programmer>
<programmer name="USBAsp" port="false" para="usbasp">
</programmer>
<programmer name="avrisp">
</programmer>
</programmerlist>
<mculist>
<mcu name="AT90S1200″ para="1200″>
<description></description>
</mcu>
<mcu name="AT90S2313″ para="2313″>
<description></description>
</mcu>
<mcu name="AT90S2333″ para="2333″>
<description></description>
</mcu>
<mcu name="AT90S2343″ para="2343″>
<description></description>
</mcu>
<mcu name="AT90S4414″ para="4414″>
<description></description>
</mcu>
<mcu name="AT90S4433″ para="4433″>
<description></description>
</mcu>
<mcu name="AT90S4434″ para="4434″>
<description></description>
</mcu>
</mculist>
<portlist>
<port name="lpt1″>
<description></description>
</port>
<port name="lpt2″>
<description></description>
</port>
<port name="com1″>
<description></description>
</port>
<port name="com2″>
<description></description>
</port>
<port name="com3″>
<description></description>
</port>
<port name="com4″>
<description></description>
</port>
</portlist>
</configuration>

Technorati tags: , , , , ,

Modify AVRDUDE-GUI Win32 version to support USBasp

Added support USBasp in avrdude-gui for win32

download it. (for Win32) include modify source code.

update:

push modify source code On GitHub , if you need a new version & source code please to visit.


Screen Capture

 


Ref.

Dev-C++ & MinGW & wxWindows2.6.2 开发环境的配置
SourceForge :  avrdude-gui
fischl.de – USBasp – USB programmer for Atmel AVR controllers

Technorati tags: , , ,