Thanks for pointing me to the mkit-gcc, with this one I can now compile the blinky example.
I wouldn’t have found that one, because I just had a look at nRF51822-mKIT page, that one shows Yotta Targets at the bottom, so I tried all the gcc ones, but unfortunately it does not show the mkit-gcc one.
I now have another newbie question:
The tutorial say that once compiled, one should copy the blink.bin to the mbed drive. This does not work for my nRF51822-mKIT. I saw that it also builds a blinky.hex and a blinky-combined.hex. My blinky example only worked when copying the blinky-combined.hex.
How do I find out which file to copy and what is the difference between blinky.hex and blinky-combined.hex.
I just tried to run yotta test after adding a test case to my blinky example.
This did not work
info: test blinky: blinky-test-one
MBED: Instrumentation: "/dev/tty.usbmodem1412" and disk: "/Volumes/MBED"
HOST: Copy image onto target...
HOST: Initialize serial port...
...port ready!
HOST: Reset target...
HOST: Detecting test case properties...
error: test blinky-test-one failed (command: blinky-test-one)
info: tests complete: 0 passed, 1 failed
I added a debug output line to the copy_image_raw function inside the mbed_base.py of the > host_tests_runner to see which file is copied. And I see that it copies the blinky-test-one.bin not the hex file and the bin file does not work.
info: test blinky: blinky-test-one
MBED: Instrumentation: "/dev/tty.usbmodem1412" and disk: "/Volumes/MBED"
HOST: Copy image onto target...
DEBUG: copy_image_raw /mbed/blinky/build/mkit-gcc/test/blinky-test-one.bin => /Volumes/MBED
HOST: Initialize serial port...
...port ready!
HOST: Reset target...
HOST: Detecting test case properties...
error: test blinky-test-one failed (command: blinky-test-one)
info: tests complete: 0 passed, 1 failed
The tutorial say that once compiled, one should copy the blink.bin to the mbed drive. This does not work for my nRF51822-mKIT. I saw that it also builds a blinky.hex and a blinky-combined.hex. My blinky example only worked when copying the blinky-combined.hex.
Tutorial is for FRDM-K64F which as many other boards accepts .bin (their interface implementations). nordic boards are different in this case.
How do I find out which file to copy and what is the difference between blinky.hex and blinky-combined.hex.
combined - with the softdevice (merged)
I added a debug output line to the copy_image_raw function inside the mbed_base.py of the > host_tests_runner to see which file is copied. And I see that it copies the blinky-test-one.bin not the hex file and the bin file does not work.
blinky$mbedgt --list
mbedgt: available tests for built targets, location '/mbed/blinky/build'
target 'mkit-gcc':
test 'blinky-test-one'
target 'st-nucleo-f401re-gcc':
test 'blinky-test-one'
Example: execute 'mbedgt -t TARGET_NAME -n TEST_NAME' to run test TEST_NAME for target TARGET_NAME
blinky$mbedgt -V
mbedgt: checking for yotta target in current directory
reason: no --target switch set
mbedgt: checking yotta target in current directory
calling yotta: yotta --plain target
mbedgt: assuming default target as 'mkit-gcc'
mbedgt: detecting connected mbed-enabled devices...
mbedgt: detected 1 device
detected 'NRF51822' -> 'NRF51822[0]', console at '/dev/tty.usbmodem1412', mounted at '/Volumes/MBED', target id '1070021853313120313436373130332033313037AED6DEA8'
mbedgt: yotta search for mbed-target 'nrf51822'
calling yotta: yotta --plain search -k mbed-target:nrf51822 target
found target 'bbc-microbit-classic-gcc'
found target 'bbc-microbit-classic-armcc'
found target 'nordic-nrf51822-16k-gcc'
found target 'nordic-nrf51822-32k-gcc'
found target 'nordic-nrf51822-16k-armcc'
found target 'nordic-nrf51822-32k-armcc'
found target 'nordic-nrf51822-gcc'
found target 'bbc-microbit-classic-gcc-nosd'
found target 'nordic-nrf51822-armcc'
found target 'bbc-microbit-classic-armcc-nosd'
use 0 instances for testing
mbedgt: no platform/target matching tests were found!
mbedgt: no target matching platforms were found!
completed in 2.07 sec
So somehow my connected nRF51822-mKIT does not get recognized as device for the mkit-gcc target.
So i tried to specify a target nordic-nrf51822-gcc that is found for the nrf51822 and the mkit-gcc inherits from, but unfortunately this again results in the build error of my initial post:
mbedgt -V -t nordic-nrf51822-gcc
mbedgt: detecting connected mbed-enabled devices...
mbedgt: detected 1 device
detected 'NRF51822' -> 'NRF51822[0]', console at '/dev/tty.usbmodem1412', mounted at '/Volumes/MBED', target id '1070021853313120313436373130332033313037AED6DEA8'
mbedgt: yotta search for mbed-target 'nrf51822'
calling yotta: yotta --plain search -k mbed-target:nrf51822 target
found target 'bbc-microbit-classic-gcc'
found target 'bbc-microbit-classic-armcc'
found target 'nordic-nrf51822-16k-gcc'
found target 'nordic-nrf51822-32k-gcc'
found target 'nordic-nrf51822-16k-armcc'
found target 'nordic-nrf51822-32k-armcc'
found target 'nordic-nrf51822-gcc'
found target 'bbc-microbit-classic-gcc-nosd'
found target 'nordic-nrf51822-armcc'
found target 'bbc-microbit-classic-armcc-nosd'
mbedgt: processing 'nordic-nrf51822-gcc' yotta target compatible platforms...
mbedgt: processing 'NRF51822' platform...
mbedgt: using platform 'NRF51822' for test:
target_id_mbed_htm = '1070021853313120313436373130332033313037AED6DEA8'
mount_point = '/Volumes/MBED'
target_id = '1070021853313120313436373130332033313037AED6DEA8'
serial_port = '/dev/tty.usbmodem1412'
target_id_usb_id = '1070021853313120313436373130332033313037AED6DEA8'
platform_name = 'NRF51822'
platform_name_unique = 'NRF51822[0]'
mbedgt: building your sources and tests with yotta...
calling yotta: yotta --target=nordic-nrf51822-gcc,* build
info: generate for target: nordic-nrf51822-gcc 1.0.0 at /mbed/blinky/yotta_targets/nordic-nrf51822-gcc
CMake Warning at /mbed/blinky/yotta_targets/nordic-nrf51822-gcc/CMake/toolchain.cmake:23 (message):
No definition of YOTTA_CFG_NRF51822_RAM_SIZE found, building image for
default 16K target.
Call Stack (most recent call first):
toolchain.cmake:9 (include)
/usr/local/Cellar/cmake/3.4.0/share/cmake/Modules/CMakeDetermineSystem.cmake:98 (include)
CMakeLists.txt:85 (project)
GCC version is: 4.9.3
suppressing warnings from nrf51-sdk
-- The ASM compiler identification is GNU
-- Found assembler: /usr/local/bin/arm-none-eabi-gcc
CMake Error at /mbed/blinky/yotta_modules/mbed-hal-nrf51822-mcu/CMakeLists.txt:94 (message):
Missing PLATFORM_SPECIFIC_HAL_LIB
-- Configuring incomplete, errors occurred!
See also "/mbed/blinky/build/nordic-nrf51822-gcc/CMakeFiles/CMakeOutput.log".
error: command ['cmake', '-D', 'CMAKE_BUILD_TYPE=RelWithDebInfo', '-G', 'Ninja', '.'] failed
mbedgt: yotta build failed!
mbedgt: yotta returned 1
completed in 3.42 sec
So somehow no luck to run my tests on my nRF51822-mKIT board with mbed 3.0.
Thanks. I saw your PR and tried to change my local blinky/yotta_targets/mkit-gcc/target.json file accordingly. Unfortunately this does not help since Greentea uses a yotta search yotta --plain search -k mbed-target:nrf51822 target which does the search on the online repository and therefore uses the online target.json. So it looks like I have to wait for a new release of the mkit-gcc target or is it possible to somehow configure an local repository.
Update your greentea, the latest version should not check registry by default. There was added a new argument --yotta-registry to explicitly enable it.
Therefore if you test that locally (please set target mkit before running mbedgt, so target is present in yotta_targets → mbedgt sees it). It should work
I updated all the mbed tools (yotta, greentea, …) to the latest version and now my local change is considered . Thanks for the hint.
But still I could not run my test because now also Greentea copies/loads the blinky-test-one.bin not the hex file:
blinky$mbedgt -V
...
mbedgt: running 1 test for target 'mkit-gcc' and platform 'NRF51822'
use 1 instance for testing
mbedgt: selecting test case observer...
calling mbedhtrun: mbedhtrun -d /Volumes/MBED -p /dev/tty.usbmodem1412:9600 -f "./build/mkit-gcc/test/blinky-test-one.bin" -C 6 -c shell -m NRF51822
mbedgt: mbed-host-test-runner: started
MBED: Instrumentation: "/dev/tty.usbmodem1412" and disk: "/Volumes/MBED"
HOST: Copy image onto target...
HOST: Initialize serial port...
...port ready!
HOST: Reset target...
HOST: Detecting test case properties...
HOmbedgt: mbed-host-test-runner: stopped
mbedgt: mbed-host-test-runner: returned 'TIMEOUT'
mbedgt: test on hardware with target id: 1070021853313120313436373130332033313037AED6DEA8
test 'blinky-test-one' ................................................................. TIMEOUT in 10.43 sec
mbedgt: test report:
+----------+---------------+-----------------+---------+--------------------+-------------+
| target | platform_name | test | result | elapsed_time (sec) | copy_method |
+----------+---------------+-----------------+---------+--------------------+-------------+
| mkit-gcc | NRF51822 | blinky-test-one | TIMEOUT | 10.43 | shell |
+----------+---------------+-----------------+---------+--------------------+-------------+
Result: 1 TIMEOUT
completed in 20.77 sec
Lukily I found the place in Greentea where I have to specify what it should load for the nRF51822-mKIT and added it locally and now I could finally run my test :
mbedgt: test report:
+----------+---------------+-----------------+--------+--------------------+-------------+
| target | platform_name | test | result | elapsed_time (sec) | copy_method |
+----------+---------------+-----------------+--------+--------------------+-------------+
| mkit-gcc | NRF51822 | blinky-test-one | OK | 3.78 | shell |
+----------+---------------+-----------------+--------+--------------------+-------------+