A new blue pill variant with only 32 KiB of flash (secretly coming with
64 KiB flash) instead of the use 64 KiB flash (secretly coming with 128 KiB)
is not compatible with `make flash`. This commit changes the OpenOCD config
so that both variants can be flashed.
While testing the Arduino example for ESP32 boards, the problem of gpio_read for output ports was figured out. During these tests, also the wrong comment has been fixed.
- SPIM0/SPIS0/TWIM0/TWIS0 have the same priority and are mutually exclusive,
to allow concurrent use we change the default TWIM used for i2c to
TWIM1 since spi uses SPI0 by default
The MSB-A2 and the Avsextrem board once had support for using the USB
interface of the LPC2387. The code setting up the USB clock has been unused
for ages and is now defunct, as the required value for `USBCLKDivValue` is no
longer present in RIOT's code base. This commits removes the defunct and unused
code.
This fixes the JTAG flasher which needs a hw_reset
This is needed since the standard jtag reset command does not work
Since FLASHFILE is assigned in the jlink makefile only the bsl needs something
The FLASHFILE is assigned a hex since the bin takes much longer to flash
The mips-malta board is a maintainance burden, has no working UART input
and is unobtainable and thus must be removed.
1. Unobtainable board
=====================
The mips-malta board is not an off-the-shelf part. A quick web
search only show the MIPS website where one is told to "contact sales".
I could find it on ebay, used, at €155 and from single seller.
Not having access to the board means:
a. We cannot maintain it. In fact it could be broken right now.
b. Potential RIOT uses have not access to the board either. In other
words, it is pointless to run on hardware nobody has.
2. No working UART input
========================
Not all applications need UART input, but that is no excuse for not supporting
it:
a. Makes development & debugging way harder.
b. It is impossible to run interactive tests.
b.1. Constrains the rest of the platforms by providing an incentive to not
make tests interactive.
c. The lack of UART is a witness to the poor quality of the port.
I want to stress point (c). If something as basic as a serial port cannot work,
how can we expect more complex fucntionality to work. The answer is impossible
to know, because of point (1).
3. Maintainance burden
======================
The RIOT project has limited time and human resources which can be better spent.
a. Compiling for mips-malta wastes CPU time.
b. Blacklisting the board in the test wastes contributor's time.
c. Adapting the board's makefile during build system rework takes time and makes
the reworks harder.
c.1. Add to that that the changes are most of the time not even tested on the board
because of (1). Look at the github issues/PRs and you will see it.
d. Developers usually stick to the lowest common denominator. Issue (2) sets this
denominator unacceptably low.
MIPS platform in general
========================
In commits I will address general issues in the MIPS platform and why it should all
be removed.
This is needed for those who do not know about searching the periph conf
It gives some hints on how to physically locate you board if connecting up sensors
cpu/stm32_common: cleanup periph eth
boards/nucleo-f767zi: cleanup dependencies
boards/nucleo-f767zi: fix dma configuration attribute for eth
examples/default: add nucleo-767zi in boards with netif
drivers/stm_32_eth: Add header guard for eth_config
Co-authored-By: Robin <robin@chilio.net>
stm32eth: Move to stm32_common periph
cpu/stm32_periph_eth: Rebase to current master branch
- Update DMA to use new vendor headers
- Update send to use iolist. It looks like the packet headers are now transfered as seperate iolist entries which results in the eth periph sending each header as own packet. To fix this a rather ugly workaround is used where the whole iolist content is first copied to a static buffer. This will be fixed soon in another commit
- If MAC is set to zero use luid to generate one
- Small code style fixes
cpu/stm312f7: Add periph config for on-board ethernet
boards/nucleo-f767zi: Add config for on board ethernet
tests/stm32_eth_lwip: Remove board restriction
boards/common/nucleo: Add luid module if stm32 ethernet is used
tests/stm32_eth_gnrc: Add Testcase for gnrc using the stm32 eth periph
stm32_eth: Rework netdev driver layour
tests/stm32_eth_*: Use netdev driver header file for prototypes
stm32_eth: Add auto init for stm32 eth netdev driver
boards/stm32: Enable ethernet conf for nucleo boards
stm32_eth_auto_init: Add dont be pendantic flag
stm32_eth: Remove dma specific stuff from periph_cpu.h
Looks like this was implemented in PR #9171 and 021697ae94 with the same interface.
stm32_eth: Remove eth feature from stm32f4discovery boards
stm32_eth: Migrate to stm32 DMA API
stm32_eth: Add iolist to module deps
stm32_eth: Rework send function to use iolist
stm32_eth: Fix ci build warnings
stm32_eth: Fix bug introduced with iolist usage
stm32_eth: Remove redundant static buffer
stm32_eth: Fix feature dependencies
stm32_eth: Fix wrong header guard name
stm32_eth: Implement correct l2 netstats interface
stm32_eth: Rename public functions to stm32_eth_*
stm32_eth: Fix doccheck
stm32_eth: Move register DEFINE to appropriate header file
stm32_eth: remove untested configuration for f446ze boards
stm32_eth: Move periph configuration struct to stm32_common
stm32_eth: Fix naming of eth_phy_read and eth_phy_write
stm32_eth: Remove obsolete test applications
drivers/eth-phy: add generic Ethernet PHY iface
cpu/stm32f4: implement eth driver peripheral
This implements the ethernet (MAC) peripheral of the stm32f4 as a
netdev driver.
boards/stm32f4discovery: add eth configuration
boards/stm32f4discovery: add feature stm32_eth
tests/stm32_eth_lwip: add test application
The softdevice is only verified to be working on nrf52832-based
boards. This feature prevents the softdevice from being build for
other, similar targets (e.g. nrf52840-based boards).
Introduce and use a common/remote/Makefile.features.
The boards were already using the common `Makefile.include` and
`Makefile.dep`.
This makes 'include $(RIOTCPU)/cc2538/Makefile.features' be done in
the same module where 'CPU' is defined.
Preparation for moving 'CPU' definition to Makefile.features.
Introduce and use a common/msba2/Makefile.features.
The boards were already using the common `Makefile.include` and
`Makefile.dep`.
This makes 'include $(RIOTCPU)/lpc2387/Makefile.features' be done in
the same module where 'CPU' is defined.
Preparation for moving 'CPU' definition to Makefile.features.
Previously this code was compiled unconditionally which might result in
a linking error since qdecs_value is not defined if the periph_qdec
module isn't enabled.
- Updated outdated information
- Fixed Markdown to generate desired output
- Replaced references to source code by references to their documentation
- Correct use of units (b = bit, B = byte, Ki = 1024, K = 1000, ...)
It seems the doc was not added during the port.
This adds documentation similar to the openmote-cc2538.
This also expands on some flashing issues that have occurred.
The board is flashing using a binary file and not a 'hex' file.
I did not update the documentation when renaming the variable.
The comment was copied from the other boards using 'fscopy' and a
hexfile.
Moved SPI config from boards/common/nrf52xxxdk/include/periph_config.h to
boards/common/nrf52/include/cfg_spi_default.h. This allows all nRF52 based
boards to use this SPI config if applicable and also allows nRF52*-DK boards
to use custom SPI configs, if needed.
The toolchain variables were overwritten anyway in
`makefiles/toolchain/gnu|llvm.inc.mk` as they use `=` affectation,
except for `OBJCOPY`.
On my Linux ubuntu bionic machine, the only difference for `info-build`
with both gnu/llvm and also with LTO=1
is that it now uses an absolute path for `objcopy`
-OBJCOPY: objcopy
+OBJCOPY: /usr/bin/objcopy
On the OSX 17.7.0 I tested, there was no difference.
This variable is only used for the term recipe (and maybe for flashing). They
should not be evaluated if they are not needed and the user should not see a
warning that the port is not set if he does not use port (for example in make
all.)
PORT_LINUX and PORT_DARWIN are evaluated by
`makefiles/tools/serial.inc.mk` and some boards Makefile.include.
Their value does not need to be exported.
This also globally removes the line saying that the exports are needed
for flash rule.
Keep the compiled '.bin' file to remove the need to compile it when
flashing. This remove the need to have the toolchain when flashing so
allow compiling and flashing with `BUILD_IN_DOCKER=1` without a local
toolchain.
Even if it ends up storing a binary, the file is only 34 bytes.
MSPDEBUGFLAGS is evaluated only in the same file.
Its value does not need to be exported.
This will also prevent evaluating 'PORT' for MSPDEBUGFLAGS when not needed.
DEBUGGER/DEBUGGER_FLAGS/DEBUGSERVER/DEBUGSERVER_FLAGS are evaluated by the
main Makefile.include or by file included by it.
Their value does not need to be exported.
Testing
-------
`git diff --word-diff` only reports `export` being removed.
`git show --stat` reports `55 insertions(+), 55 deletions(-)`
Which is the same amount as lines that where matching
`export[[:blank::]]\+VARIABLE`.
RESET and RESET_FLAGS are evaluated by the main Makefile.include or by file
included by it. Their value does not need to be exported.
This will also prevent evaluating 'PORT' for RESET_FLAGS when not needed.
Testing
-------
`git diff --word-diff` only reports `export` being removed.
`git show --stat` reports `24 insertions(+), 24 deletions(-)`
Which is the same amount as lines that where matching
`export[[:blank::]]\+VARIABLE`.
FLASHER and FFLAGS are evaluated by the main Makefile.include or by file
included by it. Their value does not need to be exported.
This will also prevent evaluating 'PORT' for FFLAGS when not needed.
Testing
-------
`git diff --word-diff` only reports `export` being removed.
`git show --stat` reports `84 insertions(+), 84 deletions(-)`
Which is the same amount as lines that where matching
`export[[:blank::]]\+VARIABLE`.
The currently supported SAM0 MCUs (samd21, saml21, saml1x) share the same
Timer peripheral, yet each of them carries it's own copy of the Timer
driver.
This introduces a new timer driver that is common for all sam0 MCUs and
uses structs for configuration instead of defines.
When it was running 'hello-world', the board could not be flashed through
JLinkExe anymore and only through the drag and drop support.
By resetting the board before doing 'loadbin' it can now be flashed
properly.
- Indicated that the hardware reset signal is used to reset the device and that
OpenOCD will that connect under reset
- Added troubleshooting for flashing using hardware reset
- Removed previous troubleshooting for flashing, as this issue is no longer
present since OpenOCD connects under reset
This removes doing `filter-out periph_hwrng, $(FEATURES_PROVIDED)`
after processing `cpu/$(CPU)/Makefile.features`.
The current solution is a HACK as `CPU_MODEL` is currently not available
at that moment but will be in the near future.
It will allow always including `cpu/$(CPU)/Makefile.features` after
`boards/$(BOARD)/Makefile.features`.
It is a part of moving `CPU/CPU_MODEL` definitions to `Makefile.features`.
UART devices are now configured using static array in header files instead of static variables in implementation to be able to define UART_NUMOF using the size of the array instead of a variable.
SPI devices are now configured using static array in header files instead of static variables in implementation to be able to define SPI_NUMOF using the size of the array instead of a variable.
I2C devices are now configured using static array in header files instead of static variables in implementation to be able to define I2C_NUMOF using the size of the array instead of a variable.
DAC pins are now configured using static arrays in header files instead of static variables in implementation to be able to define DAC_NUMOF using the size of these arrays instead of a variable.
ADC pins are now configured using static arrays in header files instead of static variables in implementation to be able to define ADC_NUMOF using the size of these arrays instead of a variable.
No need to specify SX127X_PARAMS structure as it is already
defined in drivers/sx127x/include/sx127x_params.h.
Also remove SX127X_PARAM_SPI and SX127X_PARAM_PASELECT as their
values are the same as default ones.
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Moving atmega_stdio_init() to cpu_init() just before periph_init() guarantees
that stdio is available to allow DEBUG() in periph_init(). This also helps to
unify the boot up process of ATmega boards and de-duplicates the stdio init from
board_init().
Added file with clock settings for STM32-F7 CPUs with a core clock of 216MHz,
an external high speed clock of 8 MHz and external low speed clock (32.768kHz)
enabled.
Declaring the address in decimal format meant that it was being
interpreted as a decimal rather than hex address by the tooling
and the intermediate bash arithmetic. This fixes that bug.
Add a rule to build `lpc2k_pgm` when flashing.
It is only compiled if it is using the one in `tools`.
If overwritten to `lpc2k_pgm` if it should be taken from the path,
it is not compiled.
The compilation is still done in `boards/common/msba2/tools` as it was
the case before and this commit does not address this.
The Arduino Nano board is the cheapest member of the Arduino family and used the
same MCU as the Arduino Uno. It differs in the form factor (the Nano is much
smaller), it uses an integrated FT232RL TTL adapter instead of an ATmega16u2 to
provide access to the serial console via USB, and it uses a different
bootloader (which occupies 2 KiB of the 32 KiB flash instead of 0.5 KiB occupied
on the Arduino Uno). This commit mostly copy pastes code from the Arduino Uno.
Add motor_driver driver configuration example.
The most simple motor driver type is used here (MOTOR_DRIVER_1_DIR) which
needs only one pin to work.
This example uses already configured PWM channels and 2 free GPIOS.
Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
Configure 2 factice motors in one motor_driver.
native_motor_driver_qdec_simulation() is provided to simulate QDEC encoders
virtually linked to the motors.
Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
native_motor_driver_qdec_simulation() callback is called each time
motor_set() from motor_driver driver is called.
It set associated qdec value to the PWM duty cycle.
QDEC values are stored in qdecs_value[] array in the order motors
are described in board.h.
Then it is needed to configure in first motors that needs the QDEC in
board.h.
Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
The CPU variable in the boards Makefile.include file already contains the target
CPU, so there is no reason to provide it in each board again as avrdude flag.
This commit automatically sets the avrdude target from the CPU variable and
removes the unneeded flags.
A common configuration file is introduced for stm32f4 with core clock
at 168MHz with HSE at 8MHz, 2 configuration files are introduced to²:
distinguish between clock configuration with and without LSE.
The board does not have external low speed crystal.
Page 20 of User Manual: 6.10.2 "OSC 32 kHz clock supply"
* X3 Crystal (not provided)
https://www.st.com/resource/en/user_manual/dm00063382.pdf
This fixes `example/default` and makes `tests/periph_rtc` work properly.
- Moved code for periph_conf of all ATmega based boards to boards/common/atmega
- Added possibility to override config from individual board:
- Named file `periph_conf_atmega_common.h` and let this be included from
`board/$BOARD/include/periph_conf.h` to allow modifications
- Guarded individual periph configs by `#ifndef $PERIPH_NUMOF` ... `#endif`
The board should not globally set `TERMFLAGS` without a RIOT_TERMINAL
condition.
Also the board does not export uart through usb and thus needs an uart
converter connected. Other boards in the same situation do not need
to set `TERMPROG` without a valid baudrate. So remove the definition
anyway.
This also removes the export of TERM* variables and should make it work
with the other RIOT_TERMINAL.
The link to nodemcu-devkit-v1.0 was missing 'h' in 'http'.
Other links were missing 'http://' or 'https://' and were pointing
to non-existing components on RIOT's web site.
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Features must be provided by the board if they're actually
available on board. Other features might be provided by the
CPU.
Some grouping is also removed as it is not necessary.
Leverages common flasher (avrdude) and removes unnecessary exports.
Moreover, a reuse of serial.inc.mk is perfomed from the same
atmega_common/Makefile.include