mirror of
https://github.com/apache/nuttx.git
synced 2026-05-30 13:27:01 +08:00
Merge remote-tracking branch 'origin/master' into ieee802154
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
<h1><big><font color="#3c34ec">
|
<h1><big><font color="#3c34ec">
|
||||||
<i>NuttX C Coding Standard</i>
|
<i>NuttX C Coding Standard</i>
|
||||||
</font></big></h1>
|
</font></big></h1>
|
||||||
<p>Last Updated: April 18, 2017</p>
|
<p>Last Updated: May 6, 2017</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -405,8 +405,11 @@
|
|||||||
<p>
|
<p>
|
||||||
<b>Line Spacing</b>
|
<b>Line Spacing</b>
|
||||||
A single blank line should precede and follow each comment.
|
A single blank line should precede and follow each comment.
|
||||||
The only exception is for the file header block comment that begins on line one;
|
The only exceptions are (1) for the file header block comment that begins on line one;
|
||||||
there is no preceding blank line in that case.
|
there is no preceding blank line in that case.
|
||||||
|
And (2) for conditional compilation.
|
||||||
|
Conditional compilation should include the conditional logic <i>and</i> all comments associated with the conditional logic.
|
||||||
|
In this case, the blank line appears <i>before</i> the conditional, not after it.
|
||||||
</p>
|
</p>
|
||||||
<center><table width="60%" border=1>
|
<center><table width="60%" border=1>
|
||||||
<tr><td bgcolor="white">
|
<tr><td bgcolor="white">
|
||||||
@@ -416,6 +419,12 @@
|
|||||||
a = b;
|
a = b;
|
||||||
/* set b equal to c */
|
/* set b equal to c */
|
||||||
b = c;
|
b = c;
|
||||||
|
|
||||||
|
/* Do the impossible */
|
||||||
|
|
||||||
|
#ifdef CONFIG_THE_IMPOSSIBLE
|
||||||
|
the_impossible();
|
||||||
|
#endif
|
||||||
</ul></pre></font>
|
</ul></pre></font>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<tr><td bgcolor="white">
|
<tr><td bgcolor="white">
|
||||||
@@ -430,6 +439,11 @@
|
|||||||
|
|
||||||
b = c;
|
b = c;
|
||||||
|
|
||||||
|
#ifdef CONFIG_THE_IMPOSSIBLE
|
||||||
|
/* Do the impossible */
|
||||||
|
|
||||||
|
the_impossible();
|
||||||
|
#endif
|
||||||
</ul></pre></font>
|
</ul></pre></font>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table></center>
|
</table></center>
|
||||||
@@ -1611,7 +1625,7 @@ enum xyz_state_e
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>Lowercase Exceptions</b>.
|
<b>Lowercase Exceptions</b>.
|
||||||
There are3 a few lower case values in NuttX macro names. Such as a lower-case <code>p</code> for a period or decimal point (such as <code>VOLTAGE_3p3V</code>).
|
There are a few lower case values in NuttX macro names. Such as a lower-case <code>p</code> for a period or decimal point (such as <code>VOLTAGE_3p3V</code>).
|
||||||
I have also used lower-case <code>v</code> for a version number (such as <code>CONFIG_NET_IPv6</code>).
|
I have also used lower-case <code>v</code> for a version number (such as <code>CONFIG_NET_IPv6</code>).
|
||||||
However, these are exceptions to the rule rather than illustrating a rule.
|
However, these are exceptions to the rule rather than illustrating a rule.
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -208,6 +208,8 @@ nuttx/
|
|||||||
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/pic32mx7mmb/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/pic32mx7mmb/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
||||||
| |- pic32mz-starterkit/
|
| |- pic32mz-starterkit/
|
||||||
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/pic32mz-starterkit/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/pic32mz-starterkit/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
||||||
|
| |- photon/
|
||||||
|
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/photon/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
||||||
| |- qemu-i486/
|
| |- qemu-i486/
|
||||||
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/qemu-i486/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
| | `- <a href="https://bitbucket.org/nuttx/nuttx/src/master/configs/qemu-i486/README.txt" target="_blank"><b><i>README.txt</i></b></a>
|
||||||
| |- sabre-6quad/
|
| |- sabre-6quad/
|
||||||
|
|||||||
@@ -1580,6 +1580,8 @@ nuttx/
|
|||||||
| | `- README.txt
|
| | `- README.txt
|
||||||
| |- pic32mz-starterkit/
|
| |- pic32mz-starterkit/
|
||||||
| | `- README.txt
|
| | `- README.txt
|
||||||
|
| |- photon/
|
||||||
|
| | `- README.txt
|
||||||
| |- qemu-i486/
|
| |- qemu-i486/
|
||||||
| | `- README.txt
|
| | `- README.txt
|
||||||
| |- sabre-6quad/
|
| |- sabre-6quad/
|
||||||
|
|||||||
@@ -6165,6 +6165,19 @@ if STM32_SERIALDRIVER
|
|||||||
|
|
||||||
comment "Serial Driver Configuration"
|
comment "Serial Driver Configuration"
|
||||||
|
|
||||||
|
config STM32_SERIAL_RXDMA_BUFFER_SIZE
|
||||||
|
int "Rx DMA buffer size"
|
||||||
|
default 32
|
||||||
|
range 32 4096
|
||||||
|
depends on USART1_RXDMA || USART2_RXDMA || USART3_RXDMA || UART4_RXDMA || UART5_RXDMA || USART6_RXDMA || UART7_RXDMA || UART8_RXDMA
|
||||||
|
---help---
|
||||||
|
The DMA buffer size when using RX DMA to emulate a FIFO.
|
||||||
|
|
||||||
|
When streaming data, the generic serial layer will be called
|
||||||
|
every time the FIFO receives half or this number of bytes.
|
||||||
|
|
||||||
|
Value given here will be rounded up to next multiple of 4 bytes.
|
||||||
|
|
||||||
config SERIAL_DISABLE_REORDERING
|
config SERIAL_DISABLE_REORDERING
|
||||||
bool "Disable reordering of ttySx devices."
|
bool "Disable reordering of ttySx devices."
|
||||||
depends on STM32_USART1 || STM32_USART2 || STM32_USART3 || STM32_UART4 || STM32_UART5 || STM32_USART6 || STM32_UART7 || STM32_UART8
|
depends on STM32_USART1 || STM32_USART2 || STM32_USART3 || STM32_UART4 || STM32_UART5 || STM32_USART6 || STM32_UART7 || STM32_UART8
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ int stm32_freerun_initialize(struct stm32_freerun_s *freerun, int chan,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
freerun->chan = chan;
|
freerun->chan = chan;
|
||||||
|
freerun->width = STM32_TIM_GETWIDTH(freerun->tch);
|
||||||
freerun->running = false;
|
freerun->running = false;
|
||||||
|
|
||||||
#ifdef CONFIG_CLOCK_TIMEKEEPING
|
#ifdef CONFIG_CLOCK_TIMEKEEPING
|
||||||
@@ -153,7 +154,7 @@ int stm32_freerun_initialize(struct stm32_freerun_s *freerun, int chan,
|
|||||||
|
|
||||||
/* Set timer period */
|
/* Set timer period */
|
||||||
|
|
||||||
STM32_TIM_SETPERIOD(freerun->tch, UINT32_MAX);
|
STM32_TIM_SETPERIOD(freerun->tch, (uint32_t)((1ull << freerun->width) - 1));
|
||||||
|
|
||||||
/* Start the counter */
|
/* Start the counter */
|
||||||
|
|
||||||
@@ -248,7 +249,8 @@ int stm32_freerun_counter(struct stm32_freerun_s *freerun,
|
|||||||
* usecs = (ticks * USEC_PER_SEC) / frequency;
|
* usecs = (ticks * USEC_PER_SEC) / frequency;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
usec = ((((uint64_t)overflow << 32) + (uint64_t)counter) * USEC_PER_SEC) /
|
usec = ((((uint64_t)overflow << freerun->width) +
|
||||||
|
(uint64_t)counter) * USEC_PER_SEC) /
|
||||||
freerun->frequency;
|
freerun->frequency;
|
||||||
|
|
||||||
/* And return the value of the timer */
|
/* And return the value of the timer */
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
struct stm32_freerun_s
|
struct stm32_freerun_s
|
||||||
{
|
{
|
||||||
uint8_t chan; /* The timer/counter in use */
|
uint8_t chan; /* The timer/counter in use */
|
||||||
|
uint8_t width; /* Width of timer (16- or 32-bits) */
|
||||||
bool running; /* True: the timer is running */
|
bool running; /* True: the timer is running */
|
||||||
FAR struct stm32_tim_dev_s *tch; /* Handle returned by stm32_tim_init() */
|
FAR struct stm32_tim_dev_s *tch; /* Handle returned by stm32_tim_init() */
|
||||||
uint32_t frequency;
|
uint32_t frequency;
|
||||||
|
|||||||
@@ -182,8 +182,14 @@
|
|||||||
* When streaming data, the generic serial layer will be called
|
* When streaming data, the generic serial layer will be called
|
||||||
* every time the FIFO receives half this number of bytes.
|
* every time the FIFO receives half this number of bytes.
|
||||||
*/
|
*/
|
||||||
|
# if !defined(CONFIG_STM32_SERIAL_RXDMA_BUFFER_SIZE)
|
||||||
# define RXDMA_BUFFER_SIZE 32
|
# define CONFIG_STM32_SERIAL_RXDMA_BUFFER_SIZE 32
|
||||||
|
# endif
|
||||||
|
# define RXDMA_MUTIPLE 4
|
||||||
|
# define RXDMA_MUTIPLE_MASK (RXDMA_MUTIPLE -1)
|
||||||
|
# define RXDMA_BUFFER_SIZE ((CONFIG_STM32_SERIAL_RXDMA_BUFFER_SIZE \
|
||||||
|
+ RXDMA_MUTIPLE_MASK) \
|
||||||
|
& ~RXDMA_MUTIPLE_MASK))
|
||||||
|
|
||||||
/* DMA priority */
|
/* DMA priority */
|
||||||
|
|
||||||
|
|||||||
@@ -334,22 +334,23 @@ static void stm32_tim_gpioconfig(uint32_t cfg, stm32_tim_channel_t mode);
|
|||||||
|
|
||||||
/* Timer methods */
|
/* Timer methods */
|
||||||
|
|
||||||
static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, stm32_tim_mode_t mode);
|
static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, stm32_tim_mode_t mode);
|
||||||
static int stm32_tim_setclock(FAR struct stm32_tim_dev_s *dev, uint32_t freq);
|
static int stm32_tim_setclock(FAR struct stm32_tim_dev_s *dev, uint32_t freq);
|
||||||
static void stm32_tim_setperiod(FAR struct stm32_tim_dev_s *dev,
|
static void stm32_tim_setperiod(FAR struct stm32_tim_dev_s *dev,
|
||||||
uint32_t period);
|
uint32_t period);
|
||||||
static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev);
|
static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev);
|
||||||
static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
static int stm32_tim_getwidth(FAR struct stm32_tim_dev_s *dev);
|
||||||
stm32_tim_channel_t mode);
|
static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
||||||
static int stm32_tim_setcompare(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
stm32_tim_channel_t mode);
|
||||||
uint32_t compare);
|
static int stm32_tim_setcompare(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
||||||
static int stm32_tim_getcapture(FAR struct stm32_tim_dev_s *dev, uint8_t channel);
|
uint32_t compare);
|
||||||
static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, xcpt_t handler,
|
static int stm32_tim_getcapture(FAR struct stm32_tim_dev_s *dev, uint8_t channel);
|
||||||
void *arg, int source);
|
static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, xcpt_t handler,
|
||||||
|
void *arg, int source);
|
||||||
static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source);
|
static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source);
|
||||||
static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source);
|
static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source);
|
||||||
static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source);
|
static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source);
|
||||||
static int stm32_tim_checkint(FAR struct stm32_tim_dev_s *dev, int source);
|
static int stm32_tim_checkint(FAR struct stm32_tim_dev_s *dev, int source);
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Private Data
|
* Private Data
|
||||||
@@ -361,6 +362,7 @@ static const struct stm32_tim_ops_s stm32_tim_ops =
|
|||||||
.setclock = stm32_tim_setclock,
|
.setclock = stm32_tim_setclock,
|
||||||
.setperiod = stm32_tim_setperiod,
|
.setperiod = stm32_tim_setperiod,
|
||||||
.getcounter = stm32_tim_getcounter,
|
.getcounter = stm32_tim_getcounter,
|
||||||
|
.getwidth = stm32_tim_getwidth,
|
||||||
.setchannel = stm32_tim_setchannel,
|
.setchannel = stm32_tim_setchannel,
|
||||||
.setcompare = stm32_tim_setcompare,
|
.setcompare = stm32_tim_setcompare,
|
||||||
.getcapture = stm32_tim_getcapture,
|
.getcapture = stm32_tim_getcapture,
|
||||||
@@ -904,6 +906,41 @@ static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev)
|
|||||||
return stm32_getreg32(dev, STM32_BTIM_CNT_OFFSET);
|
return stm32_getreg32(dev, STM32_BTIM_CNT_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Name: stm32_tim_getwidth
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
static int stm32_tim_getwidth(FAR struct stm32_tim_dev_s *dev)
|
||||||
|
{
|
||||||
|
/* Only TIM2 and TIM5 timers may be 32-bits in width
|
||||||
|
*
|
||||||
|
* Reference Table 2 of en.DM00042534.pdf
|
||||||
|
*/
|
||||||
|
|
||||||
|
switch (((struct stm32_tim_priv_s *)dev)->base)
|
||||||
|
{
|
||||||
|
/* TIM2 is 32-bits on all except F10x, L0x, and L1x lines */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_TIM2) && !defined(STM32_STM32F10XX) && \
|
||||||
|
!defined(STM32_STM32L15XX)
|
||||||
|
case STM32_TIM2_BASE:
|
||||||
|
return 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* TIM5 is 32-bits on all except F10x lines */
|
||||||
|
|
||||||
|
#if defined(CONFIG_STM32_TIM5) && !defined(STM32_STM32F10XX)
|
||||||
|
case STM32_TIM5_BASE:
|
||||||
|
return 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* All others are 16-bit times */
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Name: stm32_tim_setchannel
|
* Name: stm32_tim_setchannel
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|||||||
@@ -61,6 +61,7 @@
|
|||||||
#define STM32_TIM_SETCLOCK(d,freq) ((d)->ops->setclock(d,freq))
|
#define STM32_TIM_SETCLOCK(d,freq) ((d)->ops->setclock(d,freq))
|
||||||
#define STM32_TIM_SETPERIOD(d,period) ((d)->ops->setperiod(d,period))
|
#define STM32_TIM_SETPERIOD(d,period) ((d)->ops->setperiod(d,period))
|
||||||
#define STM32_TIM_GETCOUNTER(d) ((d)->ops->getcounter(d))
|
#define STM32_TIM_GETCOUNTER(d) ((d)->ops->getcounter(d))
|
||||||
|
#define STM32_TIM_GETWIDTH(d) ((d)->ops->getwidth(d))
|
||||||
#define STM32_TIM_SETCHANNEL(d,ch,mode) ((d)->ops->setchannel(d,ch,mode))
|
#define STM32_TIM_SETCHANNEL(d,ch,mode) ((d)->ops->setchannel(d,ch,mode))
|
||||||
#define STM32_TIM_SETCOMPARE(d,ch,comp) ((d)->ops->setcompare(d,ch,comp))
|
#define STM32_TIM_SETCOMPARE(d,ch,comp) ((d)->ops->setcompare(d,ch,comp))
|
||||||
#define STM32_TIM_GETCAPTURE(d,ch) ((d)->ops->getcapture(d,ch))
|
#define STM32_TIM_GETCAPTURE(d,ch) ((d)->ops->getcapture(d,ch))
|
||||||
@@ -166,6 +167,7 @@ struct stm32_tim_ops_s
|
|||||||
|
|
||||||
/* General and Advanced Timers Adds */
|
/* General and Advanced Timers Adds */
|
||||||
|
|
||||||
|
int (*getwidth)(FAR struct stm32_tim_dev_s *dev);
|
||||||
int (*setchannel)(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
int (*setchannel)(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
||||||
stm32_tim_channel_t mode);
|
stm32_tim_channel_t mode);
|
||||||
int (*setcompare)(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
int (*setcompare)(FAR struct stm32_tim_dev_s *dev, uint8_t channel,
|
||||||
|
|||||||
@@ -0,0 +1,125 @@
|
|||||||
|
README
|
||||||
|
======
|
||||||
|
|
||||||
|
This README discusses issues unique to NuttX configurations for the
|
||||||
|
Particle.io Photon board featuring the STM32F205RG MCU.
|
||||||
|
The STM32F205RG is a 120 MHz Cortex-M3 operation with 1Mbit Flash
|
||||||
|
memory and 128kbytes. The board includes a Broadcom BCM43362 WiFi.
|
||||||
|
|
||||||
|
Contents
|
||||||
|
========
|
||||||
|
|
||||||
|
- Selecting the Photon board on NuttX
|
||||||
|
- Configuring NuttX to use your Wireless Router (aka Access Point)
|
||||||
|
- Flashing NuttX in the Photon board
|
||||||
|
- Serial console configuration
|
||||||
|
|
||||||
|
Selecting the Photon board on NuttX
|
||||||
|
===================================
|
||||||
|
|
||||||
|
NOTICE: We will not discuss about toolchains and environment configuration
|
||||||
|
here, please take a look at STM32F4Discory board README or other STM32 board
|
||||||
|
because it should work for Photon board as well.
|
||||||
|
|
||||||
|
Let us to consider that you cloned the nuttx and apps repositories, then
|
||||||
|
follow these steps:
|
||||||
|
|
||||||
|
1) Clear your build system before to start:
|
||||||
|
|
||||||
|
$ make apps_distclean
|
||||||
|
$ make distclean
|
||||||
|
|
||||||
|
2) Enter inside nuttx/tools and configure to use the Photon board:
|
||||||
|
|
||||||
|
$ cd nuttx
|
||||||
|
$ cd tools
|
||||||
|
$ ./configure.sh photon/wlan
|
||||||
|
|
||||||
|
Now please return to root of nuttx/ directory:
|
||||||
|
|
||||||
|
$ cd ..
|
||||||
|
|
||||||
|
Configuring NuttX to use your Wireless Router (aka Access Point)
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
Since you are already in the root of nuttx/ repository, execute
|
||||||
|
make menuconfig to define your Wireless Router and your password:
|
||||||
|
|
||||||
|
$ make menuconfig
|
||||||
|
|
||||||
|
Browser the menus this way:
|
||||||
|
|
||||||
|
Application Configuration --->
|
||||||
|
NSH Library --->
|
||||||
|
Networking Configuration --->
|
||||||
|
WAPI Configuration --->
|
||||||
|
(myApSSID) SSID
|
||||||
|
(mySSIDpassphrase) Passprhase
|
||||||
|
|
||||||
|
Replace the SSID from myApSSID with your wireless router name and
|
||||||
|
the Passprhase with your WiFi password.
|
||||||
|
|
||||||
|
Exit and save your configuration.
|
||||||
|
|
||||||
|
Finally just compile NuttX:
|
||||||
|
|
||||||
|
$ make
|
||||||
|
|
||||||
|
Flashing NuttX in the Photon board
|
||||||
|
==================================
|
||||||
|
|
||||||
|
Connect the Photon board in your computer using a MicroUSB cable. Press and
|
||||||
|
hold both board's buttons (SETUP and RESET), then release the RESET button,
|
||||||
|
the board will start blinking in the Purple color, waiting until it starts
|
||||||
|
blinking in Yellow color. Now you can release the SETUP button as well.
|
||||||
|
|
||||||
|
1) You can verify if DFU mode in your board is working, using this command:
|
||||||
|
|
||||||
|
$ sudo dfu-util -l
|
||||||
|
dfu-util 0.8
|
||||||
|
|
||||||
|
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
|
||||||
|
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
|
||||||
|
This program is Free Software and has ABSOLUTELY NO WARRANTY
|
||||||
|
Please report bugs to dfu-util@lists.gnumonks.org
|
||||||
|
|
||||||
|
Found DFU: [2b04:d006] ver=0200, devnum=15, cfg=1, intf=0, alt=1, name="@DCT Flash /0x00000000/01*016Kg", serial="00000000010C"
|
||||||
|
Found DFU: [2b04:d006] ver=0200, devnum=15, cfg=1, intf=0, alt=0, name="@Internal Flash /0x08000000/03*016Ka,01*016Kg,01*064Kg,07*128Kg", serial="00000000010C"
|
||||||
|
|
||||||
|
2) Flash the nuttx.bin inside the Internal Flash:
|
||||||
|
|
||||||
|
$ sudo dfu-util -d 2b04:d006 -a 0 -s 0x08020000 -D nuttx.bin
|
||||||
|
|
||||||
|
dfu-util 0.8
|
||||||
|
|
||||||
|
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
|
||||||
|
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
|
||||||
|
This program is Free Software and has ABSOLUTELY NO WARRANTY
|
||||||
|
Please report bugs to dfu-util@lists.gnumonks.org
|
||||||
|
|
||||||
|
dfu-util: Invalid DFU suffix signature
|
||||||
|
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
|
||||||
|
Opening DFU capable USB device...
|
||||||
|
ID 2b04:d006
|
||||||
|
Run-time device DFU version 011a
|
||||||
|
Claiming USB DFU Interface...
|
||||||
|
Setting Alternate Setting #0 ...
|
||||||
|
Determining device status: state = dfuIDLE, status = 0
|
||||||
|
dfuIDLE, continuing
|
||||||
|
DFU mode device DFU version 011a
|
||||||
|
Device returned transfer size 4096
|
||||||
|
DfuSe interface name: "Internal Flash "
|
||||||
|
Downloading to address = 0x08020000, size = 331348
|
||||||
|
Download [=========================] 100% 331348 bytes
|
||||||
|
Download done.
|
||||||
|
File downloaded successfully
|
||||||
|
|
||||||
|
|
||||||
|
Serial console configuration
|
||||||
|
============================
|
||||||
|
|
||||||
|
Connect a USB/Serial 3.3V dongle to GND, TX and RX pins of Photon board.
|
||||||
|
Then use some serial console client (minicom, picocom, teraterm, etc) confi-
|
||||||
|
gured to 115200 8n1 without software or hardware flow control.
|
||||||
|
|
||||||
|
Reset the board and you should see NuttX starting in the serial.
|
||||||
Reference in New Issue
Block a user