Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
b48a86ee33
4
.gitignore
vendored
4
.gitignore
vendored
@ -8,7 +8,7 @@ Make.dep
|
||||
.swp
|
||||
.*.swp
|
||||
core
|
||||
.gdbinit
|
||||
/.gdbinit
|
||||
/cscope.*
|
||||
/.config
|
||||
/.config.old
|
||||
@ -24,5 +24,7 @@ core
|
||||
/*.bin
|
||||
/*.ihx
|
||||
/*.hex
|
||||
/.cproject
|
||||
/.project
|
||||
/pcode
|
||||
/tags
|
||||
|
@ -8,7 +8,7 @@
|
||||
<tr align="center" bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1><big><font color="#3c34ec"><i>NuttShell (NSH)</i></font></big></h1>
|
||||
<p>Last Updated: June 6, 2017</p>
|
||||
<p>Last Updated: June 13, 2017</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -305,7 +305,7 @@
|
||||
<tr>
|
||||
<td><br></td>
|
||||
<td>
|
||||
<a href="#cmdmkfatfs">2.37 Create a FAT Filesystem (mkfatfs)</a>
|
||||
<a href="#cmdmkfatfs">2.37 Create a FAT File System (mkfatfs)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -335,7 +335,7 @@
|
||||
<tr>
|
||||
<td><br></td>
|
||||
<td>
|
||||
<a href="#cmdnfsmount">2.42 Mount an NFS file system (nfsmount)</a>
|
||||
<a href="#cmdnfsmount">2.42 Mount an NFS File System (nfsmount)</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -619,9 +619,35 @@
|
||||
NuttShell (NSH)
|
||||
nsh>
|
||||
</pre></ul>
|
||||
The greating may also include NuttX versioning information if you are using a versioned copy of NuttX.
|
||||
The greeting may also include NuttX versioning information if you are using a versioned copy of NuttX.
|
||||
<code>nsh></code> is the NSH prompt and indicates that you may enter a command from the console.
|
||||
</p>
|
||||
<p>
|
||||
<a name="usbstartup"><b>USB console startup</b></a>.
|
||||
When using a USB console, the start-up sequence differs a little: In this case, you are required to press <i>ENTER</i> three times. Then NSH prompt will appear as described above.
|
||||
This is required for the following reasons:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
This assures that the USB connection is stable.
|
||||
The USB connection may be made, broken, and re-established a few times if the USB cable is not yet fully seated.
|
||||
Waiting for <i>ENTER</i> to be pressed three times assures that the connection is stable.
|
||||
</li>
|
||||
<li>
|
||||
The establishment of the connection is two step process: First, the USB serial connection is made with the host PC. Then the application that uses the serial interface is started on the host.
|
||||
When the serial connection is established on the host, the host operating system may send several <i>AT</i> modem commands to the host depending upon how the host serial port is configured.
|
||||
By waiting for <i>ENTER</i> to be pressed three consecutive times, all of these modem commands will go to the bit-bucket and will not be interpreted as NSH command input.
|
||||
</li>
|
||||
<li>
|
||||
Similarly, in the second step when the applications is started, there may be additional <i>AT</i> modem commands sent out the serial port.
|
||||
Most serial terminal programs will do this unless they are specifically configured to suppress the modem command output.
|
||||
Waiting for the <i>ENTER</i> input eliminates the invalid command errors from both (2) and (3).
|
||||
</li>
|
||||
<li>
|
||||
Finally, if NSH did not wait for some positive indication that the serial terminal program is up and running, then the output of the NSH greeting and initial NSH prompt would be lost.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
<a name="cle"><b>Extended Command Line Editing</b></a>.
|
||||
By default, NuttX uses a simple command line editor that allows command entry after the <code>nsh></code> and supports only the <i>backspace</i> key for editing.
|
||||
@ -752,7 +778,7 @@ nsh>
|
||||
<td><code><file></code></td>
|
||||
<td>
|
||||
is the full or relative path to any writable object
|
||||
in the filesystem name space (file or character driver).
|
||||
in the file system name space (file or character driver).
|
||||
Such objects will be referred to simply as files throughout
|
||||
this document.
|
||||
</td>
|
||||
@ -968,7 +994,7 @@ done
|
||||
<ul>
|
||||
<li>
|
||||
NSH will create a read-only RAM disk (a ROM disk), containing a tiny
|
||||
ROMFS filesystem containing the following:
|
||||
ROMFS file system containing the following:
|
||||
<ul><pre>
|
||||
`--init.d/
|
||||
`-- rcS
|
||||
@ -976,7 +1002,7 @@ done
|
||||
Where rcS is the NSH start-up script.
|
||||
</li>
|
||||
<li>
|
||||
NSH will then mount the ROMFS filesystem at <code>/etc</code>, resulting in:
|
||||
NSH will then mount the ROMFS file system at <code>/etc</code>, resulting in:
|
||||
<ul><pre>
|
||||
|--dev/
|
||||
| `-- ram0
|
||||
@ -1352,7 +1378,7 @@ cp <source-path> <dest-path>
|
||||
<p>
|
||||
<b>Synopsis</b>.
|
||||
Copy of the contents of the file at <code><source-path></code> to the location
|
||||
in the filesystem indicated by <code><dest-path></code>.
|
||||
in the file system indicated by <code><dest-path></code>.
|
||||
</p>
|
||||
|
||||
<table width ="100%">
|
||||
@ -1726,7 +1752,7 @@ ifconfig [nic_name [<ip-address>|dhcp]] [dr|gw|gateway <dr-address>]
|
||||
<li>
|
||||
<p>
|
||||
With one or no arguments, <code>ifconfig</code> will shows the
|
||||
current configuration of the network and, perhaps, the status of ethernet
|
||||
current configuration of the network and, perhaps, the status of Ethernet
|
||||
device:
|
||||
</p>
|
||||
<ul><pre>
|
||||
@ -1749,7 +1775,7 @@ eth0 HWaddr 00:18:11:80:10:06
|
||||
<li>
|
||||
<p>
|
||||
If both the network interface name and an IP address are supplied as arguments,
|
||||
then <code>ifconfig</code> will set the address of the ethernet device:
|
||||
then <code>ifconfig</code> will set the address of the Ethernet device:
|
||||
</p>
|
||||
<ul><pre>
|
||||
ifconfig nic_name ip_address
|
||||
@ -1970,7 +1996,7 @@ ln [-s] <target> <link>
|
||||
This implementation is simplified for use with NuttX in these ways:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Links may be created only within the NuttX top-level, <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>.
|
||||
<li>Links may be created only within the NuttX top-level, <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a>.
|
||||
No file system currently supported by NuttX provides symbolic links.</li>
|
||||
<li>For the same reason, only soft links are implemented.</li>
|
||||
<li>File privileges are ignored.</li>
|
||||
@ -1992,7 +2018,7 @@ ls [-lRs] <dir-path>
|
||||
<p>
|
||||
<b>Synopsis</b>.
|
||||
Show the contents of the directory at <code><dir-path></code>. NOTE:
|
||||
<code><dir-path></code> must refer to a directory and no other filesystem
|
||||
<code><dir-path></code> must refer to a directory and no other file system
|
||||
object.
|
||||
</p>
|
||||
<p><b>Options:</b></p>
|
||||
@ -2172,10 +2198,10 @@ mkdir <path>
|
||||
</p>
|
||||
<p>
|
||||
<b>Limited to Mounted File Systems</b>.
|
||||
Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> for its root file
|
||||
Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a> for its root file
|
||||
system.
|
||||
The <code>mkdir</code> command can only be used to create directories in volumes set up with the
|
||||
<a href="#cmdmount"><code>mount</code></a> command; it cannot be used to create directories in the <i>pseudo</i> filesystem.
|
||||
<a href="#cmdmount"><code>mount</code></a> command; it cannot be used to create directories in the <i>pseudo</i> file system.
|
||||
</p>
|
||||
<p><b>Example:</b></p>
|
||||
<ul><pre>
|
||||
@ -2190,7 +2216,7 @@ nsh>
|
||||
<table width ="100%">
|
||||
<tr bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<a name="cmdmkfatfs"><h2>2.37 Create a FAT Filesystem (mkfatfs)</h2></a>
|
||||
<a name="cmdmkfatfs"><h2>2.37 Create a FAT File System (mkfatfs)</h2></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -2208,7 +2234,7 @@ mkfatfs [-F <fatsize>] <block-driver>
|
||||
</p>
|
||||
<p>
|
||||
NSH provides this command to access the <a href="mkfatfs"><code>mkfatfs()</code></a> NuttX API.
|
||||
This block device must reside in the NuttX <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> and
|
||||
This block device must reside in the NuttX <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a> and
|
||||
must have been created by some call to <code>register_blockdriver()</code> (see <code>include/nuttx/fs/fs.h</code>).
|
||||
</p>
|
||||
|
||||
@ -2323,22 +2349,22 @@ mount -t <fstype> [-o <options>] <block-device> <code><dir-
|
||||
<code>mount</code> performs a three way association, binding:
|
||||
</p>
|
||||
<ol>
|
||||
<li><b>File system.</b>
|
||||
<li><b>File System.</b>
|
||||
The '-t <code><fstype></code>' option identifies the type of
|
||||
file system that has been formatted on the <code><block-device></code>.
|
||||
As of this writing, <code>vfat</code> is the only supported value for <code><fstype></code>
|
||||
</li>
|
||||
<li><b>Block Device.</b>
|
||||
The <code><block-device></code> argument is the full or relative
|
||||
path to a block driver inode in the <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>.
|
||||
path to a block driver inode in the <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a>.
|
||||
By convention, this is a name under the <code>/dev</code> sub-directory.
|
||||
This <code><block-device></code> must have been previously formatted with the same file system
|
||||
type as specified by <code><fstype></code>
|
||||
</li>
|
||||
<li><b>Mount Point.</b>
|
||||
The mount point, <code><dir-path></code>, is the location in the
|
||||
<a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> where the mounted volume will appear.
|
||||
This mount point can only reside in the NuttX <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>.
|
||||
<a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a> where the mounted volume will appear.
|
||||
This mount point can only reside in the NuttX <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a>.
|
||||
By convention, this mount point is a subdirectory under <code>/mnt</code>.
|
||||
The mount command will create whatever pseudo directories that may be needed to complete the
|
||||
full path but the full path must not already exist.
|
||||
@ -2346,7 +2372,7 @@ mount -t <fstype> [-o <options>] <block-device> <code><dir-
|
||||
</ol>
|
||||
<p>
|
||||
After the volume has been mounted in the NuttX
|
||||
<a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>,
|
||||
<a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a>,
|
||||
it may be access in the same way as other objects in the file system.
|
||||
</p>
|
||||
<p><b>Examples</b>:</p>
|
||||
@ -2395,7 +2421,7 @@ mv <old-path> <new-path>
|
||||
<p>
|
||||
<b>Synopsis</b>.
|
||||
Rename the file object at <code><old-path></code> to <code><new-path></code>.
|
||||
Both paths must reside in the same mounted filesystem.
|
||||
Both paths must reside in the same mounted file system.
|
||||
</p>
|
||||
|
||||
<table width ="100%">
|
||||
@ -2628,11 +2654,11 @@ rm <file-path>
|
||||
<p>
|
||||
<b>Synopsis</b>.
|
||||
Remove the specified <code><file-path></code> name from the mounted file system.
|
||||
Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> for its root file
|
||||
Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a> for its root file
|
||||
system.
|
||||
The <code>rm</code> command can only be used to remove (unlink) files in volumes set up with the
|
||||
<a href="#cmdmount"><code>mount</code></a> command;
|
||||
it cannot be used to remove names in the <i>pseudo</i> filesystem.
|
||||
it cannot be used to remove names in the <i>pseudo</i> file system.
|
||||
</p>
|
||||
<p><b>Example:</b></p>
|
||||
<ul><pre>
|
||||
@ -2662,11 +2688,11 @@ rmdir <dir-path>
|
||||
<p>
|
||||
<b>Synopsis</b>.
|
||||
Remove the specified <code><dir-path></code> directory from the mounted file system.
|
||||
Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> for its root file
|
||||
Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> file system</a> for its root file
|
||||
system.
|
||||
The <code>rmdir</code> command can only be used to remove directories from volumes set up with the
|
||||
<a href="#cmdmount"><code>mount</code></a> command;
|
||||
it cannot be used to remove directories from the <i>pseudo</i> filesystem.
|
||||
it cannot be used to remove directories from the <i>pseudo</i> file system.
|
||||
</p>
|
||||
<p><b>Example:</b></p>
|
||||
<ul><pre>
|
||||
@ -3563,11 +3589,11 @@ nsh>
|
||||
creation of files for the correct operation of the <code>put</code> command.</small><br>
|
||||
<sup>3</sup><small>
|
||||
<code>CONFIG_FS_READABLE</code> is not a user configuration but is set automatically
|
||||
if any readable filesystem is selected. At present, this is either <code>CONFIG_FS_FAT</code>
|
||||
if any readable file system is selected. At present, this is either <code>CONFIG_FS_FAT</code>
|
||||
or <code>CONFIG_FS_ROMFS</code>.</small><br>
|
||||
<sup>4</sup><small>
|
||||
<code>CONFIG_FS_WRITABLE</code> is not a user configuration but is set automatically
|
||||
if any writable filesystem is selected. At present, this is only <code>CONFIG_FS_FAT</code>.</small><br>
|
||||
if any writable file system is selected. At present, this is only <code>CONFIG_FS_FAT</code>.</small><br>
|
||||
<sup>5</sup><small>
|
||||
Verbose help output can be suppressed by defining <code>CONFIG_NSH_HELP_TERSE</code>.
|
||||
In that case, the help command is still available but will be slightly smaller.
|
||||
@ -3625,7 +3651,7 @@ nsh>
|
||||
<td valign="top"><b><code>CONFIG_NSH_FILEIOSIZE</code></b></td>
|
||||
<td>
|
||||
Size of a static I/O buffer used for file access (ignored if
|
||||
there is no filesystem). Default is 1024.
|
||||
there is no file system). Default is 1024.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -3698,7 +3724,7 @@ set FOOBAR ABC_${FOO}_${BAR}
|
||||
<td valign="top"><b><code>CONFIG_NSH_NESTDEPTH</code></b></td>
|
||||
<td>
|
||||
The maximum number of nested <a href="#conditional"><code>if-then[-else]-fi</code></a> sequences that
|
||||
are permissable. Default: 3
|
||||
are permissible. Default: 3
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -3746,7 +3772,7 @@ set FOOBAR ABC_${FOO}_${BAR}
|
||||
<tr>
|
||||
<td valign="top"><b><code>CONFIG_NSH_ROMFSETC</code></b></td>
|
||||
<td>
|
||||
Mount a ROMFS filesystem at <code>/etc</code> and provide a startup script
|
||||
Mount a ROMFS file system at <code>/etc</code> and provide a startup script
|
||||
at <code>/etc/init.d/rcS</code>. The default startup script will mount
|
||||
a FAT FS RAMDISK at <code>/tmp</code> but the logic is
|
||||
<a href="#startupscript">easily extensible</a>.
|
||||
@ -3975,7 +4001,7 @@ set FOOBAR ABC_${FOO}_${BAR}
|
||||
<tr>
|
||||
<td valign="top"><b><code>CONFIG_NSH_NOMAC</code></b></td>
|
||||
<td>
|
||||
Set if your ethernet hardware has no built-in MAC address.
|
||||
Set if your Ethernet hardware has no built-in MAC address.
|
||||
If set, a bogus MAC will be assigned.
|
||||
</td>
|
||||
</tr>
|
||||
@ -4248,7 +4274,7 @@ mount -t vfat /dev/ram1 /tmp
|
||||
</p>
|
||||
<li>
|
||||
<p>
|
||||
Mount the FAT filesystem at a configured mountpoint, <code>/tmp</code>.
|
||||
Mount the FAT file system at a configured mountpoint, <code>/tmp</code>.
|
||||
</p>
|
||||
</ul>
|
||||
<p>
|
||||
@ -4666,7 +4692,7 @@ CONFIG_SCHED_WAITPID=y
|
||||
<p>
|
||||
You replace the sample code at <code>apps/examples/nsh/nsh_main.c</code> with whatever start-up logic that you want.
|
||||
NSH is a library at <code>apps/nshlib</code>.
|
||||
<code>apps.examplex/nsh</code> is just a tiny, example start-up function (<code>CONFIG_USER_ENTRYPOINT</code>()) that that runs immediately and illustrates how to start NSH
|
||||
<code>apps.examples/nsh</code> is just a tiny, example start-up function (<code>CONFIG_USER_ENTRYPOINT</code>()) that that runs immediately and illustrates how to start NSH
|
||||
If you want something else to run immediately then you can write your write your own custom <code>CONFIG_USER_ENTRYPOINT</code>() function and then start other tasks from your custom <code>CONFIG_USER_ENTRYPOINT</code>().
|
||||
</p>
|
||||
<li>
|
||||
@ -4723,7 +4749,7 @@ CONFIG_SCHED_WAITPID=y
|
||||
<ul>
|
||||
<li>
|
||||
<p>
|
||||
NSH will create a read-only RAM disk (a ROM disk), containing a tiny ROMFS filesystem containing the following:
|
||||
NSH will create a read-only RAM disk (a ROM disk), containing a tiny ROMFS file system containing the following:
|
||||
</p>
|
||||
<ul><pre>
|
||||
`--init.d/
|
||||
@ -4734,7 +4760,7 @@ CONFIG_SCHED_WAITPID=y
|
||||
</p>
|
||||
<li>
|
||||
<p>
|
||||
NSH will then mount the ROMFS filesystem at <code>/etc</code>, resulting in:
|
||||
NSH will then mount the ROMFS file system at <code>/etc</code>, resulting in:
|
||||
</p>
|
||||
<ul><pre>
|
||||
|--dev/
|
||||
@ -4841,7 +4867,7 @@ mount -t vfat /dev/ram1 /tmp
|
||||
</p>
|
||||
<p>
|
||||
To generate a custom <code>rcS</code> file a copy of <code>rcS.template</code> needs to be placed at <code>tools/</code> and changed according to the desired start-up behaviour.
|
||||
Running <code>tools/mkromfsimg.h</code> creates <code>nsh_romfsimg.h</code> which needs to be copied to <code>apps/nhslib</code> OR if <code>CONFIG_NSH_ARCHROMFS</code> is defined to <code>configs/<board>/include</code>.
|
||||
Running <code>tools/mkromfsimg.h</code> creates <code>nsh_romfsimg.h</code> which needs to be copied to <code>apps/nshlib</code> OR if <code>CONFIG_NSH_ARCHROMFS</code> is defined to <code>configs/<board>/include</code>.
|
||||
</p>
|
||||
</ol>
|
||||
|
||||
@ -5343,10 +5369,10 @@ xxd -i romfs_img >nsh_romfsimg.h
|
||||
<li><a href="#cmdmkrd"><code>mkrd</code></a></li>
|
||||
<li><a href="#custinit"><code>mkromfsimg.sh</code></a></li>
|
||||
<li><a href="#cmdmount"><code>mount</code></a></li>
|
||||
<li><a href="#cmdmv"><code>mv</code></a></li>
|
||||
</ul></td>
|
||||
<td width="34%" valign="top">
|
||||
<ul>
|
||||
<li><a href="#cmdmv"><code>mv</code></a></li>
|
||||
<li><a href="#cmdnfsmount"><code>nfsmount</code></a></li>
|
||||
<li><a href="#cmdoverview"><code>nice</code></a></li>
|
||||
<li><a href="#custonshlib">NSH library (<code>nshlib</code>)</a></li>
|
||||
@ -5403,6 +5429,7 @@ xxd -i romfs_img >nsh_romfsimg.h
|
||||
<li><a href="#custonshlib"><code>up_cxxinitialize()</code></a></li>
|
||||
<li><a href="#cmdurldec"><code>urldecode</code></a></li>
|
||||
<li><a href="#cmdurlencode"><code>urlencode</code></a></li>
|
||||
<li><a href="#usbstartup">USB console startup</a></li>
|
||||
<li><a href="#cmduseradd"><code>useradd</code></a></li>
|
||||
<li><a href="#cmduserdel"><code>userdel</code></a></li>
|
||||
<li><a href="#cmdusleep"><code>usleep</code></a></li>
|
||||
|
@ -556,6 +556,9 @@ clean: subdir_clean
|
||||
$(call DELFILE, _SAVED_APPS_config)
|
||||
$(call DELFILE, nuttx-export*)
|
||||
$(call DELFILE, nuttx_user*)
|
||||
$(call DELFILE, .gdbinit)
|
||||
$(call DELFILE, .cproject)
|
||||
$(call DELFILE, .project)
|
||||
$(call CLEAN)
|
||||
|
||||
subdir_distclean:
|
||||
|
@ -538,6 +538,9 @@ clean: subdir_clean
|
||||
$(call DELFILE, _SAVED_APPS_config)
|
||||
$(call DELFILE, nuttx-export*)
|
||||
$(call DELFILE, nuttx_user*)
|
||||
$(call DELFILE, .gdbinit)
|
||||
$(call DELFILE, .cproject)
|
||||
$(call DELFILE, .project)
|
||||
$(call CLEAN)
|
||||
|
||||
subdir_distclean:
|
||||
|
13
README.txt
13
README.txt
@ -583,13 +583,18 @@ Instantiating "Canned" Configurations
|
||||
included in the build and what is not. This file is also used
|
||||
to generate a C configuration header at include/nuttx/config.h.
|
||||
|
||||
Copy other, environment-specic files to ${TOPDIR
|
||||
|
||||
This might include files like .gdbinit or IDE configuration files
|
||||
like .project or .cproject.
|
||||
|
||||
General information about configuring NuttX can be found in:
|
||||
|
||||
${TOPDIR}/configs/README.txt
|
||||
${TOPDIR}/configs/<board-name>/README.txt
|
||||
|
||||
There is a configuration script in the tools/ directory that makes this
|
||||
easier. It is used as follows:
|
||||
There is a configuration script in the tools/ directory that makes does
|
||||
all of the above steps for you. It is used as follows:
|
||||
|
||||
cd ${TOPDIR}/tools
|
||||
./configure.sh <board-name>/<config-dir>
|
||||
@ -600,6 +605,10 @@ Instantiating "Canned" Configurations
|
||||
cd ${TOPDIR}\tools
|
||||
configure.bat <board-name>\<config-dir>
|
||||
|
||||
And, to make sure that other platform is supported, there is also a
|
||||
C program at tools/configure.c that can be compiled to establish the
|
||||
board configuration.
|
||||
|
||||
See tools/README.txt for more information about these scripts.
|
||||
|
||||
Refreshing Configurations
|
||||
|
217
TODO
217
TODO
@ -1,4 +1,4 @@
|
||||
NuttX TODO List (Last updated May 31, 2017)
|
||||
NuttX TODO List (Last updated June 17, 2017)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This file summarizes known NuttX bugs, limitations, inconsistencies with
|
||||
@ -9,22 +9,22 @@ issues related to each board port.
|
||||
|
||||
nuttx/:
|
||||
|
||||
(11) Task/Scheduler (sched/)
|
||||
(12) Task/Scheduler (sched/)
|
||||
(1) SMP
|
||||
(1) Memory Management (mm/)
|
||||
(0) Power Management (drivers/pm)
|
||||
(3) Signals (sched/signal, arch/)
|
||||
(3) pthreads (sched/pthread)
|
||||
(4) pthreads (sched/pthread)
|
||||
(0) Message Queues (sched/mqueue)
|
||||
(8) Kernel/Protected Build
|
||||
(3) C++ Support
|
||||
(6) Binary loaders (binfmt/)
|
||||
(14) Network (net/, drivers/net)
|
||||
(16) Network (net/, drivers/net)
|
||||
(4) USB (drivers/usbdev, drivers/usbhost)
|
||||
(0) Other drivers (drivers/)
|
||||
(12) Libraries (libc/, libm/)
|
||||
(13) Libraries (libc/, libm/)
|
||||
(10) File system/Generic drivers (fs/, drivers/)
|
||||
(9) Graphics Subsystem (graphics/)
|
||||
(10) Graphics Subsystem (graphics/)
|
||||
(3) Build system / Toolchains
|
||||
(3) Linux/Cywgin simulation (arch/sim)
|
||||
(4) ARM (arch/arm/)
|
||||
@ -34,6 +34,7 @@ apps/ and other Add-Ons:
|
||||
(2) Network Utilities (apps/netutils/)
|
||||
(1) NuttShell (NSH) (apps/nshlib)
|
||||
(1) System libraries apps/system (apps/system)
|
||||
(1) Modbus (apps/modbus)
|
||||
(1) Pascal add-on (pcode/)
|
||||
(4) Other Applications & Tests (apps/examples/)
|
||||
|
||||
@ -234,6 +235,66 @@ o Task/Scheduler (sched/)
|
||||
could be improved and made a little more efficient with this
|
||||
change.
|
||||
|
||||
Task: IDLE THREAD TCB SETUP
|
||||
Description: There are issues with setting IDLE thread stacks:
|
||||
|
||||
1. One problem is stack-related data in the IDLE threads TCB.
|
||||
A solution might be to standardize the use of g_idle_topstack.
|
||||
That you could add initialization like this in os_start:
|
||||
|
||||
@@ -344,6 +347,11 @@ void os_start(void)
|
||||
g_idleargv[1] = NULL;
|
||||
g_idletcb.argv = g_idleargv;
|
||||
|
||||
+ /* Set the IDLE task stack size */
|
||||
+
|
||||
+ g_idletcb.cmn.adj_stack_size = CONFIG_IDLETHREAD_STACKSIZE;
|
||||
+ g_idletcb.cmn.stack_alloc_ptr = (void *)(g_idle_topstack - CONFIG_IDLETHREAD_STACKSIZE);
|
||||
+
|
||||
/* Then add the idle task's TCB to the head of the ready to run list */
|
||||
|
||||
dq_addfirst((FAR dq_entry_t *)&g_idletcb, (FAR dq_queue_t *)&g_readytorun);
|
||||
|
||||
The g_idle_topstack variable is available for almost all architectures:
|
||||
|
||||
$ find . -name *.h | xargs grep g_idle_top
|
||||
./arm/src/common/up_internal.h:EXTERN const uint32_t g_idle_topstack;
|
||||
./avr/src/avr/avr.h:extern uint16_t g_idle_topstack;
|
||||
./avr/src/avr32/avr32.h:extern uint32_t g_idle_topstack;
|
||||
./hc/src/common/up_internal.h:extern uint16_t g_idle_topstack;
|
||||
./mips/src/common/up_internal.h:extern uint32_t g_idle_topstack;
|
||||
./misoc/src/lm32/lm32.h:extern uint32_t g_idle_topstack;
|
||||
./renesas/src/common/up_internal.h:extern uint32_t g_idle_topstack;
|
||||
./renesas/src/m16c/chip.h:extern uint32_t g_idle_topstack; /* Start of the heap */
|
||||
./risc-v/src/common/up_internal.h:EXTERN uint32_t g_idle_topstack;
|
||||
./x86/src/common/up_internal.h:extern uint32_t g_idle_topstack;
|
||||
|
||||
That omits there architectures: sh1, sim, xtensa, z16, z80,
|
||||
ez80, and z8. All would have to support this common
|
||||
globlal variable.
|
||||
|
||||
Also, the stack itself may be 8-, 16-, or 32-bits wide,
|
||||
depending upon the architecture.
|
||||
|
||||
2. Another problem is colorizing that stack to use with
|
||||
stack usage monitoring logic. There is logic in some
|
||||
start functions to do this in a function called go_os_start.
|
||||
It is available in these architectures:
|
||||
|
||||
./arm/src/efm32/efm32_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/kinetis/kinetis_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/sam34/sam_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/samv7/sam_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/stm32/stm32_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/stm32f7/stm32_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/stm32l4/stm32l4_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/tms570/tms570_boot.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
./arm/src/xmc4/xmc4_start.c:static void go_os_start(void *pv, unsigned int nbytes)
|
||||
|
||||
But no others.
|
||||
Status: Open
|
||||
Priority: Low, only needed for more complete debug.
|
||||
|
||||
o SMP
|
||||
^^^
|
||||
|
||||
@ -507,6 +568,33 @@ o pthreads (sched/pthreads)
|
||||
Priority: Medium-low. Priority may be higher if system call overheade becomes
|
||||
an issue.
|
||||
|
||||
Title: INAPPROPRIATE USE OF sched_lock() BY pthreads
|
||||
Description: In implementation of standard pthread functions, the non-
|
||||
standard, NuttX function sched_lock() is used. This is very
|
||||
strong sense it disables pre-emption for all threads in all
|
||||
task groups. I believe it is only really necessary in most
|
||||
cases to lock threads in the task group with a new non-
|
||||
standard interface, say pthread_lock().
|
||||
|
||||
This is because the OS resources used by a thread such as
|
||||
mutexes, condition variable, barriers, etc. are only
|
||||
meaningful from within the task group. So, in order to
|
||||
performance exclusive operations on these resources, it is
|
||||
only necessary to block other threads executing within the
|
||||
task group.
|
||||
|
||||
This is an easy change: pthread_lock() and pthread_unlock()
|
||||
would simply operate on a semaphore retained in the task
|
||||
group structure. I am, however, hesitant to make this change:
|
||||
I the flat build model, there is nothing that prevents people
|
||||
from accessing the inter-thread controls from threads in
|
||||
differnt task groups. Making this change, while correct,
|
||||
might introduce subtle bugs in code by people who are not
|
||||
using NuttX correctly.
|
||||
Status: Open
|
||||
Priority: Low. This change would improve real-time performance of the
|
||||
OS but is not otherwise required.
|
||||
|
||||
o Message Queues (sched/mqueue)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -1144,6 +1232,30 @@ o Network (net/, drivers/net)
|
||||
deal with a list of devices. That would be a huge effect and
|
||||
certainly doesn't dount as a "simple solution".
|
||||
|
||||
Title: ICMPv6 FOR 6loWPAN
|
||||
Description: The current ICMPv6 and neighbor-related logic only works with
|
||||
Ethernet MAC. For 6loWPAN, a new more conservative ICMPv6
|
||||
definitions is provided by RFC 6775. This RFC needs to be
|
||||
supported in order to support ping6 on a 6loWPAN network.
|
||||
Status: Open
|
||||
Priority: Low for now.
|
||||
|
||||
Title: ETHERNET LOCAL BROADCAST DOES NOT WORK
|
||||
|
||||
Description: In case of "local broadcast" the system still send ARP
|
||||
request to the destination, but it shouldn't, it should
|
||||
broadcast. For Example, the system has network with IP
|
||||
10.0.0.88, netmask of 255.255.255.0, it should send
|
||||
messages for 10.0.0.255 as broadcast, and not send ARP
|
||||
for 10.0.0.255
|
||||
|
||||
For more easier networking, the next line should have give
|
||||
me the broadcast address of the network, but it doesn't:
|
||||
|
||||
ioctl(_socket_fd, SIOCGIFBRDADDR, &bc_addr);
|
||||
Status: Open
|
||||
Priority: Medium
|
||||
|
||||
o USB (drivers/usbdev, drivers/usbhost)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -1505,6 +1617,64 @@ o Libraries (libc/, libm/)
|
||||
Status: Open
|
||||
Priority: Low
|
||||
|
||||
Title: FORMATTING FIXED WIDTH INTEGERS
|
||||
Description: Formats like this: lib_vsprintf(_, "%6.6u", 0) do not work.
|
||||
There is no support for the precision/width option with
|
||||
integer types. The format is simply is ignored and so can
|
||||
even cause crashes.
|
||||
|
||||
For example:
|
||||
|
||||
int hello_main(int argc, char *argv[])
|
||||
{
|
||||
printf("Hello, World!!\n");
|
||||
printf("%3.3u %3.3u %3.3u %3.3u %3.3u\n", 9, 99, 999, 9999, 99999);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Generates this incorrect output:
|
||||
|
||||
|
||||
NuttShell (NSH) NuttX-7.20
|
||||
nsh> hello
|
||||
Hello, World!!
|
||||
9 99 999 9999 99999
|
||||
nsh>
|
||||
|
||||
That output, of course, should have been:
|
||||
|
||||
9 99 999 999 999
|
||||
|
||||
The period and the precision value were being ignored (if
|
||||
floating point was disabled). In that case, parsing of the
|
||||
variable arguments could get out of sync. But a side
|
||||
effect of the referenced change is that precision value is
|
||||
now always parsed (but still incorrectly ignored for the
|
||||
case of integer formats).
|
||||
|
||||
The fix would not be too difficult but would involve change
|
||||
several functions. It would involve clipping the size of the
|
||||
number string. For example:
|
||||
|
||||
/* Get the width of the output */
|
||||
|
||||
uwidth = getusize(FMT_CHAR, flags, n);
|
||||
if (trunc > 0 && uwidth > trunc)
|
||||
{
|
||||
uwidth = trunc;
|
||||
}
|
||||
|
||||
Then limiting the length of the output string to uwidth.
|
||||
This would probably mean passing an additional parameter to
|
||||
the many *toascii() functions like:
|
||||
|
||||
/* Output the number */
|
||||
|
||||
utoascii(obj, FMT_CHAR, flags, (unsigned int)n, uwidth);
|
||||
|
||||
Status: Open
|
||||
Priority: Low
|
||||
|
||||
o File system / Generic drivers (fs/, drivers/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -1803,6 +1973,16 @@ o Graphics Subsystem (graphics/)
|
||||
the single user mode, it will be yanked out from under your
|
||||
feet in the not-so-distant future.
|
||||
|
||||
Title: WIDE-FOUNT SUPPORT
|
||||
Description: Wide fonts are not currently supported by the NuttX graphics sub-
|
||||
system. There is some discussion here:
|
||||
|
||||
https://groups.yahoo.com/neo/groups/nuttx/conversations/topics/3507
|
||||
http://www.nuttx.org/doku.php?id=wiki:graphics:wide-fonts
|
||||
|
||||
Status: Open
|
||||
Priority: Low for many, but I imagine higher in countries that use wide fonts
|
||||
|
||||
o Build system
|
||||
^^^^^^^^^^^^
|
||||
|
||||
@ -1899,6 +2079,7 @@ o Build system
|
||||
The .archive file would have to be removed on 'make clean' and would
|
||||
also need to appear in .gitignore files.
|
||||
|
||||
|
||||
o Other drivers (drivers/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -2124,6 +2305,30 @@ o System libraries apps/system (apps/system)
|
||||
Priority: Low (unless you are using mixed C-buffered I/O with readline and
|
||||
fgetc, for example).
|
||||
|
||||
o Modbus (apps/modbus)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Title: MODBUS NOT USABLE WITH USB SERIAL
|
||||
Description: Modbus can be used with USB serial, however, if the USB
|
||||
serial connectiont is lost, Modbus will hang in an infinite
|
||||
loop.
|
||||
|
||||
This is a problem in the handling of select() and read()
|
||||
and could probabaly resolved by studying the Modbus error
|
||||
handling.
|
||||
|
||||
A more USB-friendly solution would be to: (1) Re-connect and
|
||||
(2) re-open the serial drviers. That is what is done is NSH.
|
||||
When the serial USB device is removed, this terminates the
|
||||
session and NSH will then try to re-open the USB device. See
|
||||
the function nsh_waitusbready() in the file
|
||||
apps/nshlib/nsh_usbconsole.c. When the USB serial is
|
||||
reconnected the open() in the function will succeed and a new
|
||||
session will be started.
|
||||
Status: Open
|
||||
Priority: Low. This is really an enhancement request: Modbus was never
|
||||
designed to work with removable serial devices.
|
||||
|
||||
o Pascal Add-On (pcode/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -397,7 +397,7 @@ config ARCH_CORTEXR5
|
||||
select ARCH_HAVE_MPU
|
||||
select ARCH_HAVE_COHERENT_DCACHE if ELF || MODULE
|
||||
|
||||
config ARCH_CORTEX5F
|
||||
config ARCH_CORTEXR5F
|
||||
bool
|
||||
default n
|
||||
select ARCH_HAVE_MPU
|
||||
|
@ -128,11 +128,7 @@ ifeq ($(CONFIG_ARCH_CORTEXM4),y)
|
||||
TOOLCHAIN_MTUNE := -mtune=cortex-m4
|
||||
TOOLCHAIN_MARCH := -march=armv7e-m
|
||||
ifeq ($(CONFIG_ARCH_FPU),y)
|
||||
ifeq ($(CONFIG_ARCH_DPFPU),y)
|
||||
TOOLCHAIN_MFLOAT := -mfpu=fpv4-sp -mfloat-abi=hard
|
||||
else
|
||||
TOOLCHAIN_MFLOAT := -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||
endif
|
||||
else
|
||||
TOOLCHAIN_MFLOAT := -mfloat-abi=soft
|
||||
endif
|
||||
|
@ -140,6 +140,10 @@ ifeq ($(CONFIG_KINETIS_SDHC),y)
|
||||
CHIP_CSRCS += kinetis_sdhc.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_SPI),y)
|
||||
CHIP_CSRCS += kinetis_spi.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_USBDEV),y)
|
||||
CHIP_CSRCS += kinetis_usbdev.c
|
||||
endif
|
||||
|
@ -140,7 +140,7 @@
|
||||
#define SPI_MCR_PCSIS_SHIFT (16) /* Bits 16-21: Peripheral Chip Select x Inactive State */
|
||||
#define SPI_MCR_PCSIS_MASK (0x3f << SPI_MCR_PCSIS_SHIFT)
|
||||
# define SPI_MCR_PCSIS_CS(n) ((1 << (n)) << SPI_MCR_PCSIS_SHIFT)
|
||||
/* Bits 22–23: Reserved */
|
||||
/* Bits 22-23: Reserved */
|
||||
#define SPI_MCR_ROOE (1 << 24) /* Bit 24: Receive FIFO Overflow Overwrite Enable */
|
||||
#define SPI_MCR_PCSSE (1 << 25) /* Bit 25: Peripheral Chip Select Strobe Enable */
|
||||
#define SPI_MCR_MTFE (1 << 26) /* Bit 26: Modified Timing Format Enable */
|
||||
@ -165,6 +165,7 @@
|
||||
|
||||
#define SPI_CTARM_BR_SHIFT (0) /* Bits 0-3: Baud Rate Scaler */
|
||||
#define SPI_CTARM_BR_MASK (15 << SPI_CTARM_BR_SHIFT)
|
||||
# define SPI_CTARM_BR(n) ((((n) & 0xf)) << SPI_CTARM_BR_SHIFT)
|
||||
# define SPI_CTARM_BR_2 (0 << SPI_CTARM_BR_SHIFT)
|
||||
# define SPI_CTARM_BR_4 (1 << SPI_CTARM_BR_SHIFT)
|
||||
# define SPI_CTARM_BR_6 (2 << SPI_CTARM_BR_SHIFT)
|
||||
@ -205,6 +206,7 @@
|
||||
# define SPI_CTARM_CSSCK_65536 (15 << SPI_CTARM_CSSCK_SHIFT)
|
||||
#define SPI_CTARM_PBR_SHIFT (16) /* Bits 16-17: Baud Rate Prescaler */
|
||||
#define SPI_CTARM_PBR_MASK (3 << SPI_CTARM_PBR_SHIFT)
|
||||
# define SPI_CTARM_PBR(n) (((n) & 0x3) << SPI_CTARM_PBR_SHIFT)
|
||||
# define SPI_CTARM_PBR_2 (0 << SPI_CTARM_PBR_SHIFT)
|
||||
# define SPI_CTARM_PBR_3 (1 << SPI_CTARM_PBR_SHIFT)
|
||||
# define SPI_CTARM_PBR_5 (2 << SPI_CTARM_PBR_SHIFT)
|
||||
@ -231,6 +233,7 @@
|
||||
/* Bits 25-26: See common bits above */
|
||||
#define SPI_CTARM_FMSZ_SHIFT (27) /* Bits 27-30: Frame Size */
|
||||
#define SPI_CTARM_FMSZ_MASK (15 << SPI_CTARM_FMSZ_SHIFT)
|
||||
#define SPI_CTARM_FMSZ(n) ((((n) & 0xf)) << SPI_CTARM_FMSZ_SHIFT)
|
||||
#define SPI_CTARM_DBR (1 << 31) /* Bit 31: Double Baud Rate */
|
||||
|
||||
/* DSPI Clock and Transfer Attributes Register (Slave Mode) */
|
||||
@ -281,6 +284,7 @@
|
||||
|
||||
#define SPI_PUSHR_TXDATA_SHIFT (0) /* Bits 0-15: Transmit Data */
|
||||
#define SPI_PUSHR_TXDATA_MASK (0xffff << SPI_PUSHR_TXDATA_SHIFT)
|
||||
# define SPI_PUSHR_TXDATA(d) (((d) & 0xffff) << SPI_PUSHR_TXDATA_SHIFT)
|
||||
#define SPI_PUSHR_PCS_SHIFT (16) /* Bits 16-21: Select PCS signals to assert */
|
||||
#define SPI_PUSHR_PCS_MASK (0x3f << SPI_PUSHR_PCS_SHIFT)
|
||||
# define SPI_PUSHR_PCS(n) ((1 << (n)) << SPI_PUSHR_PCS_SHIFT)
|
||||
|
@ -63,11 +63,9 @@
|
||||
#include "up_arch.h"
|
||||
#include "up_internal.h"
|
||||
|
||||
#include "kinetis_config.h"
|
||||
#include "chip.h"
|
||||
#include "kinetis.h"
|
||||
#include "chip/kinetis_lpuart.h"
|
||||
#include "chip/kinetis_pinmux.h"
|
||||
#include "kinetis.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
|
1242
arch/arm/src/kinetis/kinetis_spi.c
Normal file
1242
arch/arm/src/kinetis/kinetis_spi.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -151,7 +151,7 @@ struct twi_dev_s
|
||||
struct i2c_msg_s *msg; /* Message list */
|
||||
uint32_t twiclk; /* TWIHS input clock frequency */
|
||||
uint32_t frequency; /* TWIHS transfer clock frequency */
|
||||
bool initd; /* True :device has been initialized */
|
||||
int refs; /* Reference count */
|
||||
uint8_t msgc; /* Number of message in the message list */
|
||||
|
||||
sem_t exclsem; /* Only one thread can access at a time */
|
||||
@ -1118,6 +1118,10 @@ static int twi_reset(FAR struct i2c_master_s *dev)
|
||||
|
||||
DEBUGASSERT(priv != NULL);
|
||||
|
||||
/* Our caller must own a ref */
|
||||
|
||||
DEBUGASSERT(priv->refs > 0);
|
||||
|
||||
/* Get exclusive access to the TWIHS device */
|
||||
|
||||
twi_takesem(&priv->exclsem);
|
||||
@ -1342,6 +1346,7 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
{
|
||||
struct twi_dev_s *priv;
|
||||
uint32_t frequency;
|
||||
const struct twi_attr_s *attr = 0;
|
||||
irqstate_t flags;
|
||||
int ret;
|
||||
|
||||
@ -1352,8 +1357,8 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
{
|
||||
/* Select up TWIHS0 and setup invariant attributes */
|
||||
|
||||
priv = &g_twi0;
|
||||
priv->attr = &g_twi0attr;
|
||||
priv = &g_twi0;
|
||||
attr = &g_twi0attr;
|
||||
|
||||
/* Select the (initial) TWIHS frequency */
|
||||
|
||||
@ -1366,8 +1371,8 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
{
|
||||
/* Select up TWIHS1 and setup invariant attributes */
|
||||
|
||||
priv = &g_twi1;
|
||||
priv->attr = &g_twi1attr;
|
||||
priv = &g_twi1;
|
||||
attr = &g_twi1attr;
|
||||
|
||||
/* Select the (initial) TWIHS frequency */
|
||||
|
||||
@ -1380,8 +1385,8 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
{
|
||||
/* Select up TWIHS2 and setup invariant attributes */
|
||||
|
||||
priv = &g_twi2;
|
||||
priv->attr = &g_twi2attr;
|
||||
priv = &g_twi2;
|
||||
attr = &g_twi2attr;
|
||||
|
||||
/* Select the (initial) TWIHS frequency */
|
||||
|
||||
@ -1394,14 +1399,16 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Perform one-time TWIHS initialization */
|
||||
|
||||
flags = enter_critical_section();
|
||||
|
||||
/* Has the device already been initialized? */
|
||||
|
||||
if (!priv->initd)
|
||||
if ((volatile int)priv->refs++ == 0)
|
||||
{
|
||||
/* Perform one-time TWIHS initialization */
|
||||
|
||||
priv->attr = attr;
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
@ -1438,10 +1445,6 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
/* Perform repeatable TWIHS hardware initialization */
|
||||
|
||||
twi_hw_initialize(priv, frequency);
|
||||
|
||||
/* Now it has been initialized */
|
||||
|
||||
priv->initd = true;
|
||||
}
|
||||
|
||||
leave_critical_section(flags);
|
||||
@ -1452,6 +1455,7 @@ errout_with_wdog:
|
||||
priv->timeout = NULL;
|
||||
|
||||
errout_with_irq:
|
||||
priv->refs--;
|
||||
leave_critical_section(flags);
|
||||
return NULL;
|
||||
}
|
||||
@ -1469,28 +1473,40 @@ int sam_i2cbus_uninitialize(FAR struct i2c_master_s *dev)
|
||||
struct twi_dev_s *priv = (struct twi_dev_s *) dev;
|
||||
irqstate_t flags;
|
||||
|
||||
i2cinfo("TWIHS%d Un-initializing\n", priv->attr->twi);
|
||||
DEBUGASSERT(priv);
|
||||
|
||||
/* Decrement reference count and check for underflow */
|
||||
|
||||
if (priv->refs == 0)
|
||||
{
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
i2cinfo("TWIHS%d Un-initializing refs:%d\n", priv->attr->twi, priv->refs);
|
||||
|
||||
/* Disable TWIHS interrupts */
|
||||
|
||||
flags = enter_critical_section();
|
||||
up_disable_irq(priv->attr->irq);
|
||||
|
||||
/* Reset data structures */
|
||||
if (--priv->refs == 0)
|
||||
{
|
||||
up_disable_irq(priv->attr->irq);
|
||||
|
||||
sem_destroy(&priv->exclsem);
|
||||
sem_destroy(&priv->waitsem);
|
||||
/* Reset data structures */
|
||||
|
||||
/* Free the watchdog timer */
|
||||
sem_destroy(&priv->exclsem);
|
||||
sem_destroy(&priv->waitsem);
|
||||
|
||||
wd_delete(priv->timeout);
|
||||
priv->timeout = NULL;
|
||||
/* Free the watchdog timer */
|
||||
|
||||
/* Detach Interrupt Handler */
|
||||
wd_delete(priv->timeout);
|
||||
priv->timeout = NULL;
|
||||
|
||||
(void)irq_detach(priv->attr->irq);
|
||||
/* Detach Interrupt Handler */
|
||||
|
||||
(void)irq_detach(priv->attr->irq);
|
||||
}
|
||||
|
||||
priv->initd = false;
|
||||
leave_critical_section(flags);
|
||||
return OK;
|
||||
}
|
||||
|
@ -254,7 +254,8 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_STM32_STM32F427) || defined(CONFIG_STM32_STM32F429)
|
||||
#if defined(CONFIG_STM32_STM32F427) || defined(CONFIG_STM32_STM32F429) || \
|
||||
defined(CONFIG_STM32_STM32F469)
|
||||
# define STM32_FLASH_OPTCR1_OFFSET 0x0018
|
||||
#endif
|
||||
|
||||
@ -287,7 +288,8 @@
|
||||
# elif defined(CONFIG_STM32_STM32F20XX) || defined(CONFIG_STM32_STM32F40XX)
|
||||
# define STM32_FLASH_OPTCR (STM32_FLASHIF_BASE+STM32_FLASH_OPTCR_OFFSET)
|
||||
# endif
|
||||
# if defined(CONFIG_STM32_STM32F427) || defined(CONFIG_STM32_STM32F429)
|
||||
# if defined(CONFIG_STM32_STM32F427) || defined(CONFIG_STM32_STM32F429) || \
|
||||
defined(CONFIG_STM32_STM32F469)
|
||||
# define STM32_FLASH_OPTCR1 (STM32_FLASHIF_BASE+STM32_FLASH_OPTCR1_OFFSET)
|
||||
# endif
|
||||
#endif
|
||||
@ -466,4 +468,8 @@
|
||||
void stm32_flash_lock(void);
|
||||
void stm32_flash_unlock(void);
|
||||
|
||||
#ifdef CONFIG_STM32_STM32F40XX
|
||||
int stm32_flash_writeprotect(size_t page, bool enabled);
|
||||
#endif
|
||||
|
||||
#endif /* __ARCH_ARM_SRC_STM32_CHIP_STM32_FLASH_H */
|
||||
|
@ -615,7 +615,7 @@
|
||||
#endif
|
||||
|
||||
#define GPIO_SPI3_MISO_1 (GPIO_ALT|GPIO_AF6|GPIO_SPEED_50MHz|GPIO_PORTB|GPIO_PIN4)
|
||||
#define GPIO_SPI3_MISO_2 (GPIO_ALT|GPIO_AF6|GPIO_SPEED_50MHz|GPIO_PORTC|GPIO_PIN7)
|
||||
#define GPIO_SPI3_MISO_2 (GPIO_ALT|GPIO_AF6|GPIO_SPEED_50MHz|GPIO_PORTC|GPIO_PIN11)
|
||||
#define GPIO_SPI3_MOSI_1 (GPIO_ALT|GPIO_AF6|GPIO_SPEED_50MHz|GPIO_PORTB|GPIO_PIN5)
|
||||
#define GPIO_SPI3_MOSI_2 (GPIO_ALT|GPIO_AF6|GPIO_SPEED_50MHz|GPIO_PORTC|GPIO_PIN12)
|
||||
#define GPIO_SPI3_NSS_1 (GPIO_ALT|GPIO_AF6|GPIO_SPEED_50MHz|GPIO_PORTA|GPIO_PIN15)
|
||||
|
@ -79,6 +79,8 @@
|
||||
#else
|
||||
# define FLASH_KEY1 0x45670123
|
||||
# define FLASH_KEY2 0xCDEF89AB
|
||||
# define FLASH_OPTKEY1 0x08192A3B
|
||||
# define FLASH_OPTKEY2 0x4C5D6E7F
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_STM32_STM32F10XX) || defined(CONFIG_STM32_STM32F30XX)
|
||||
@ -384,6 +386,87 @@ ssize_t stm32_eeprom_erase(size_t addr, size_t eraselen)
|
||||
|
||||
#endif /* defined(CONFIG_STM32_STM32L15XX) */
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_flash_writeprotect
|
||||
*
|
||||
* Description:
|
||||
* Enable or disable the write protection of a flash sector.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef CONFIG_STM32_STM32F40XX
|
||||
int stm32_flash_writeprotect(size_t page, bool enabled)
|
||||
{
|
||||
uint32_t reg;
|
||||
uint32_t val;
|
||||
|
||||
#ifdef CONFIG_STM32_STM32F40XX
|
||||
if (page >= STM32_FLASH_NPAGES)
|
||||
{
|
||||
return -EFAULT;
|
||||
}
|
||||
#else
|
||||
# warning missing logic in stm32_flash_writeprotect
|
||||
#endif
|
||||
|
||||
/* Select the register that contains the bit to be changed */
|
||||
|
||||
if (page < 12)
|
||||
{
|
||||
reg = STM32_FLASH_OPTCR;
|
||||
}
|
||||
#if defined(CONFIG_STM32_FLASH_CONFIG_I) && defined(CONFIG_STM32_STM32F40XX)
|
||||
else
|
||||
{
|
||||
reg = STM32_FLASH_OPTCR1;
|
||||
page -= 12;
|
||||
}
|
||||
#else
|
||||
else
|
||||
{
|
||||
return -EFAULT;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Read the option status */
|
||||
|
||||
val = getreg32(reg);
|
||||
|
||||
/* Set or clear the protection */
|
||||
|
||||
if (enabled)
|
||||
{
|
||||
val &= ~(1 << (16+page) );
|
||||
}
|
||||
else
|
||||
{
|
||||
val |= (1 << (16+page) );
|
||||
}
|
||||
|
||||
/* Unlock options */
|
||||
|
||||
putreg32(FLASH_OPTKEY1, STM32_FLASH_OPTKEYR);
|
||||
putreg32(FLASH_OPTKEY2, STM32_FLASH_OPTKEYR);
|
||||
|
||||
/* Write options */
|
||||
|
||||
putreg32(val, reg);
|
||||
|
||||
/* Trigger programmation */
|
||||
|
||||
modifyreg32(STM32_FLASH_OPTCR, 0, FLASH_OPTCR_OPTSTRT);
|
||||
|
||||
/* Wait for completion */
|
||||
|
||||
while(getreg32(STM32_FLASH_SR) & FLASH_SR_BSY) up_waste();
|
||||
|
||||
/* Relock options */
|
||||
|
||||
modifyreg32(STM32_FLASH_OPTCR, 0, FLASH_OPTCR_OPTLOCK);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_STM32_STM32F10XX) || defined(CONFIG_STM32_STM32F30XX)
|
||||
size_t up_progmem_pagesize(size_t page)
|
||||
{
|
||||
|
@ -2333,7 +2333,7 @@ static int i2s_dma_allocate(struct stm32_i2s_s *priv)
|
||||
{
|
||||
/* Allocate an RX DMA channel */
|
||||
|
||||
priv->rx.dma = stm32_dmachannel(DMAMAP_SPI3_RX_2);
|
||||
priv->rx.dma = stm32_dmachannel(DMACHAN_I2S3_RX);
|
||||
if (!priv->rx.dma)
|
||||
{
|
||||
i2serr("ERROR: Failed to allocate the RX DMA channel\n");
|
||||
@ -2356,7 +2356,7 @@ static int i2s_dma_allocate(struct stm32_i2s_s *priv)
|
||||
{
|
||||
/* Allocate a TX DMA channel */
|
||||
|
||||
priv->tx.dma = stm32_dmachannel(DMAMAP_SPI3_TX_2);
|
||||
priv->tx.dma = stm32_dmachannel(DMACHAN_I2S3_TX);
|
||||
if (!priv->tx.dma)
|
||||
{
|
||||
i2serr("ERROR: Failed to allocate the TX DMA channel\n");
|
||||
|
@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/stm32/stm32_irq.c
|
||||
*
|
||||
* Copyright (C) 2009-2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2009-2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -387,6 +387,12 @@ void up_irqinitialize(void)
|
||||
up_enable_irq(STM32_IRQ_MEMFAULT);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTC
|
||||
/* RTC was initialized earlier but IRQs weren't ready at that time */
|
||||
|
||||
stm32_rtc_irqinitialize();
|
||||
#endif
|
||||
|
||||
/* Attach all other processor exceptions (except reset and sys tick) */
|
||||
|
||||
#ifdef CONFIG_DEBUG_FEATURES
|
||||
|
@ -1301,7 +1301,7 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv,
|
||||
timclk = priv->pclk / prescaler;
|
||||
|
||||
reload = timclk / info->frequency;
|
||||
if (reload < 1)
|
||||
if (reload < 2)
|
||||
{
|
||||
reload = 1;
|
||||
}
|
||||
@ -1309,6 +1309,10 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv,
|
||||
{
|
||||
reload = 65535;
|
||||
}
|
||||
else
|
||||
{
|
||||
reload--;
|
||||
}
|
||||
|
||||
pwminfo("TIM%u PCLK: %u frequency: %u TIMCLK: %u prescaler: %u reload: %u\n",
|
||||
priv->timid, priv->pclk, info->frequency, timclk, prescaler, reload);
|
||||
|
@ -2,7 +2,7 @@
|
||||
* arch/arm/src/stm32/stm32_rtc.h
|
||||
*
|
||||
* Copyright (C) 2011 Uros Platise. All rights reserved.
|
||||
* Copyright (C) 2011-2013, 2015-2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2011-2013, 2015-2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Uros Platise <uros.platise@isotel.eu> (Original for the F1)
|
||||
* Gregory Nutt <gnutt@nuttx.org> (On-going support and development)
|
||||
*
|
||||
@ -76,24 +76,41 @@
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define STM32_RTC_PRESCALER_SECOND 32767 /* Default prescaler to get a second base */
|
||||
#define STM32_RTC_PRESCALER_MIN 1 /* Maximum speed of 16384 Hz */
|
||||
#define STM32_RTC_PRESCALER_SECOND 32767 /* Default prescaler to get a
|
||||
* second base */
|
||||
#define STM32_RTC_PRESCALER_MIN 1 /* Maximum speed of 16384 Hz */
|
||||
|
||||
#if defined(CONFIG_STM32_STM32F10XX)
|
||||
/* RTC is only a counter, store RTC data in backup domain register DR1 (if
|
||||
* CONFIG_RTC_HIRES) and DR2 (state).
|
||||
*/
|
||||
|
||||
#if !defined(CONFIG_RTC_MAGIC)
|
||||
# define CONFIG_RTC_MAGIC (0xfacefeee)
|
||||
# define CONFIG_RTC_MAGIC (0xface) /* only 16 bit */
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_RTC_MAGIC_TIME_SET)
|
||||
# define CONFIG_RTC_MAGIC_TIME_SET (CONFIG_RTC_MAGIC + 1)
|
||||
#define RTC_MAGIC_REG STM32_BKP_DR2
|
||||
|
||||
#else /* !CONFIG_STM32_STM32F10XX */
|
||||
|
||||
#if !defined(CONFIG_RTC_MAGIC)
|
||||
# define CONFIG_RTC_MAGIC (0xfacefeee)
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_RTC_MAGIC_REG)
|
||||
# define CONFIG_RTC_MAGIC_REG (0)
|
||||
# define CONFIG_RTC_MAGIC_REG (0)
|
||||
#endif
|
||||
|
||||
#define RTC_MAGIC CONFIG_RTC_MAGIC
|
||||
#define RTC_MAGIC_TIME_SET CONFIG_RTC_MAGIC_TIME_SET
|
||||
#define RTC_MAGIC_REG STM32_RTC_BKR(CONFIG_RTC_MAGIC_REG)
|
||||
#define RTC_MAGIC_REG STM32_RTC_BKR(CONFIG_RTC_MAGIC_REG)
|
||||
|
||||
#endif /* CONFIG_STM32_STM32F10XX */
|
||||
|
||||
#define RTC_MAGIC CONFIG_RTC_MAGIC
|
||||
#define RTC_MAGIC_TIME_SET CONFIG_RTC_MAGIC_TIME_SET
|
||||
|
||||
#if !defined(CONFIG_RTC_MAGIC_TIME_SET)
|
||||
# define CONFIG_RTC_MAGIC_TIME_SET (CONFIG_RTC_MAGIC + 1)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
@ -118,6 +135,23 @@ extern "C"
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_rtc_irqinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize IRQs for RTC, not possible during up_rtc_initialize because
|
||||
* up_irqinitialize is called later.
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno on failure
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
int stm32_rtc_irqinitialize(void);
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_rtc_getdatetime_with_subseconds
|
||||
*
|
||||
|
@ -365,7 +365,11 @@ static int stm32_settime(FAR struct rtc_lowerhalf_s *lower,
|
||||
|
||||
static bool stm32_havesettime(FAR struct rtc_lowerhalf_s *lower)
|
||||
{
|
||||
#if defined(CONFIG_STM32_STM32F10XX)
|
||||
return getreg16(RTC_MAGIC_REG) == RTC_MAGIC_TIME_SET;
|
||||
#else
|
||||
return getreg32(RTC_MAGIC_REG) == RTC_MAGIC_TIME_SET;
|
||||
#endif
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* arch/arm/src/stm32/stm32_rtcc.c
|
||||
*
|
||||
* Copyright (C) 2012-2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2012-2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -763,17 +763,37 @@ int up_rtc_initialize(void)
|
||||
* 3. Configure the RTC to generate RTC alarms (Alarm A or Alarm B).
|
||||
*/
|
||||
|
||||
g_rtc_enabled = true;
|
||||
rtc_dumpregs("After Initialization");
|
||||
return OK;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_rtc_irqinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize IRQs for RTC, not possible during up_rtc_initialize because
|
||||
* up_irqinitialize is called later.
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno on failure
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
int stm32_rtc_irqinitialize(void)
|
||||
{
|
||||
#ifdef CONFIG_RTC_ALARM
|
||||
# warning "Missing EXTI setup logic"
|
||||
|
||||
/* Then attach the ALARM interrupt handler */
|
||||
/* Attach the ALARM interrupt handler */
|
||||
|
||||
irq_attach(STM32_IRQ_RTC_WKUP, rtc_interrupt, NULL);
|
||||
up_enable_irq(STM32_IRQ_RTC_WKUP);
|
||||
#endif
|
||||
|
||||
g_rtc_enabled = true;
|
||||
rtc_dumpregs("After Initialization");
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
*
|
||||
* With extensions, modifications by:
|
||||
*
|
||||
* Copyright (C) 2011-2013, 2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2011-2013, 2015, 2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregroy Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -331,7 +331,9 @@ static int stm32_rtc_interrupt(int irq, void *context, FAR void *arg)
|
||||
#ifdef CONFIG_RTC_HIRES
|
||||
if ((source & RTC_CRL_OWF) != 0)
|
||||
{
|
||||
stm32_pwr_enablebkp(true);
|
||||
putreg16(getreg16(RTC_TIMEMSB_REG) + 1, RTC_TIMEMSB_REG);
|
||||
stm32_pwr_enablebkp(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -373,25 +375,34 @@ static int stm32_rtc_interrupt(int irq, void *context, FAR void *arg)
|
||||
|
||||
int up_rtc_initialize(void)
|
||||
{
|
||||
uint32_t regval;
|
||||
|
||||
/* Enable write access to the backup domain (RTC registers, RTC backup data
|
||||
* registers and backup SRAM).
|
||||
*/
|
||||
|
||||
stm32_pwr_enablebkp(true);
|
||||
|
||||
regval = getreg32(RTC_MAGIC_REG);
|
||||
if (regval != RTC_MAGIC && regval != RTC_MAGIC_TIME_SET)
|
||||
{
|
||||
/* Reset backup domain if bad magic */
|
||||
|
||||
modifyreg32(STM32_RCC_BDCR, 0, RCC_BDCR_BDRST);
|
||||
modifyreg32(STM32_RCC_BDCR, RCC_BDCR_BDRST, 0);
|
||||
putreg16(RTC_MAGIC, RTC_MAGIC_REG);
|
||||
}
|
||||
|
||||
/* Select the lower power external 32,768Hz (Low-Speed External, LSE) oscillator
|
||||
* as RTC Clock Source and enable the Clock */
|
||||
* as RTC Clock Source and enable the Clock.
|
||||
*/
|
||||
|
||||
modifyreg16(STM32_RCC_BDCR, RCC_BDCR_RTCSEL_MASK, RCC_BDCR_RTCSEL_LSE);
|
||||
|
||||
/* Enable RTC and wait for RSF */
|
||||
|
||||
modifyreg16(STM32_RCC_BDCR, 0, RCC_BDCR_RTCEN);
|
||||
|
||||
/* TODO: Get state from this function, if everything is
|
||||
* okay and whether it is already enabled (if it was disabled
|
||||
* reset upper time register)
|
||||
*/
|
||||
|
||||
g_rtc_enabled = true;
|
||||
|
||||
/* TODO: Possible stall? should we set the timeout period? and return with -1 */
|
||||
|
||||
stm32_rtc_wait4rsf();
|
||||
@ -403,21 +414,22 @@ int up_rtc_initialize(void)
|
||||
putreg16(STM32_RTC_PRESCALAR_VALUE & 0xffff, STM32_RTC_PRLL);
|
||||
stm32_rtc_endwr();
|
||||
|
||||
/* Configure RTC interrupt to catch overflow and alarm interrupts. */
|
||||
stm32_rtc_wait4rsf();
|
||||
|
||||
#if defined(CONFIG_RTC_HIRES) || defined(CONFIG_RTC_ALARM)
|
||||
irq_attach(STM32_IRQ_RTC, stm32_rtc_interrupt, NULL);
|
||||
up_enable_irq(STM32_IRQ_RTC);
|
||||
#endif
|
||||
|
||||
/* Previous write is done? This is required prior writing into CRH */
|
||||
|
||||
while ((getreg16(STM32_RTC_CRL) & RTC_CRL_RTOFF) == 0)
|
||||
{
|
||||
up_waste();
|
||||
}
|
||||
#ifdef CONFIG_RTC_HIRES
|
||||
/* Enable overflow interrupt - alarm interrupt is enabled in
|
||||
* stm32_rtc_setalarm.
|
||||
*/
|
||||
|
||||
modifyreg16(STM32_RTC_CRH, 0, RTC_CRH_OWIE);
|
||||
#endif
|
||||
|
||||
/* TODO: Get state from this function, if everything is
|
||||
* okay and whether it is already enabled (if it was disabled
|
||||
* reset upper time register)
|
||||
*/
|
||||
|
||||
g_rtc_enabled = true;
|
||||
|
||||
/* Alarm Int via EXTI Line */
|
||||
|
||||
@ -432,6 +444,33 @@ int up_rtc_initialize(void)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_rtc_irqinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize IRQs for RTC, not possible during up_rtc_initialize because
|
||||
* up_irqinitialize is called later.
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno on failure
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
int stm32_rtc_irqinitialize(void)
|
||||
{
|
||||
#if defined(CONFIG_RTC_HIRES) || defined(CONFIG_RTC_ALARM)
|
||||
/* Configure RTC interrupt to catch overflow and alarm interrupts. */
|
||||
|
||||
irq_attach(STM32_IRQ_RTC, stm32_rtc_interrupt, NULL);
|
||||
up_enable_irq(STM32_IRQ_RTC);
|
||||
#endif
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: up_rtc_time
|
||||
*
|
||||
@ -613,6 +652,7 @@ int up_rtc_settime(FAR const struct timespec *tp)
|
||||
do
|
||||
{
|
||||
stm32_rtc_beginwr();
|
||||
putreg16(RTC_MAGIC, RTC_MAGIC_TIME_SET);
|
||||
putreg16(regvals.cnth, STM32_RTC_CNTH);
|
||||
putreg16(regvals.cntl, STM32_RTC_CNTL);
|
||||
cntl = getreg16(STM32_RTC_CNTL);
|
||||
@ -652,6 +692,8 @@ int stm32_rtc_setalarm(FAR const struct timespec *tp, alarmcb_t callback)
|
||||
uint16_t cr;
|
||||
int ret = -EBUSY;
|
||||
|
||||
flags = enter_critical_section();
|
||||
|
||||
/* Is there already something waiting on the ALARM? */
|
||||
|
||||
if (g_alarmcb == NULL)
|
||||
@ -664,6 +706,8 @@ int stm32_rtc_setalarm(FAR const struct timespec *tp, alarmcb_t callback)
|
||||
|
||||
stm32_rtc_breakout(tp, ®vals);
|
||||
|
||||
stm32_pwr_enablebkp(true);
|
||||
|
||||
/* Enable RTC alarm */
|
||||
|
||||
cr = getreg16(STM32_RTC_CRH);
|
||||
@ -672,16 +716,18 @@ int stm32_rtc_setalarm(FAR const struct timespec *tp, alarmcb_t callback)
|
||||
|
||||
/* The set the alarm */
|
||||
|
||||
flags = enter_critical_section();
|
||||
stm32_rtc_beginwr();
|
||||
putreg16(regvals.cnth, STM32_RTC_ALRH);
|
||||
putreg16(regvals.cntl, STM32_RTC_ALRL);
|
||||
stm32_rtc_endwr();
|
||||
leave_critical_section(flags);
|
||||
|
||||
stm32_pwr_enablebkp(false);
|
||||
|
||||
ret = OK;
|
||||
}
|
||||
|
||||
leave_critical_section(flags);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
@ -706,6 +752,8 @@ int stm32_rtc_cancelalarm(void)
|
||||
irqstate_t flags;
|
||||
int ret = -ENODATA;
|
||||
|
||||
flags = enter_critical_section();
|
||||
|
||||
if (g_alarmcb != NULL)
|
||||
{
|
||||
/* Cancel the global callback function */
|
||||
@ -714,16 +762,18 @@ int stm32_rtc_cancelalarm(void)
|
||||
|
||||
/* Unset the alarm */
|
||||
|
||||
flags = enter_critical_section();
|
||||
stm32_pwr_enablebkp(true);
|
||||
stm32_rtc_beginwr();
|
||||
putreg16(0xffff, STM32_RTC_ALRH);
|
||||
putreg16(0xffff, STM32_RTC_ALRL);
|
||||
stm32_rtc_endwr();
|
||||
leave_critical_section(flags);
|
||||
stm32_pwr_enablebkp(false);
|
||||
|
||||
ret = OK;
|
||||
}
|
||||
|
||||
leave_critical_section(flags);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
@ -1058,6 +1058,28 @@ int up_rtc_initialize(void)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_rtc_irqinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize IRQs for RTC, not possible during up_rtc_initialize because
|
||||
* up_irqinitialize is called later.
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno on failure
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
int stm32_rtc_irqinitialize(void)
|
||||
{
|
||||
/* Nothing to do */
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_rtc_getdatetime_with_subseconds
|
||||
*
|
||||
|
@ -842,7 +842,7 @@ static int stm32l4pwm_timer(FAR struct stm32l4_pwmtimer_s *priv,
|
||||
timclk = priv->pclk / prescaler;
|
||||
|
||||
reload = timclk / info->frequency;
|
||||
if (reload < 1)
|
||||
if (reload < 2)
|
||||
{
|
||||
reload = 1;
|
||||
}
|
||||
@ -850,6 +850,10 @@ static int stm32l4pwm_timer(FAR struct stm32l4_pwmtimer_s *priv,
|
||||
{
|
||||
reload = 65535;
|
||||
}
|
||||
else
|
||||
{
|
||||
reload--;
|
||||
}
|
||||
|
||||
pwminfo("TIM%u PCLK: %u frequency: %u TIMCLK: %u prescaler: %u reload: %u\n",
|
||||
priv->timid, priv->pclk, info->frequency, timclk, prescaler, reload);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* arch/arm/src/stm32l4/stm32l4_rtcc.c
|
||||
*
|
||||
* Copyright (C) 2012-2016 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2012-2017 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
* dev@ziggurat29.com (adaptations to stm32l4)
|
||||
*
|
||||
@ -1003,6 +1003,28 @@ int up_rtc_initialize(void)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_rtc_irqinitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize IRQs for RTC, not possible during up_rtc_initialize because
|
||||
* up_irqinitialize is called later.
|
||||
*
|
||||
* Input Parameters:
|
||||
* None
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) on success; a negated errno on failure
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
int stm32_rtc_irqinitialize(void)
|
||||
{
|
||||
/* Nothing to do */
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32l4_rtc_getdatetime_with_subseconds
|
||||
*
|
||||
|
2
configs/.gitignore
vendored
2
configs/.gitignore
vendored
@ -9,6 +9,8 @@ Make.dep
|
||||
.*.swp
|
||||
core
|
||||
.gdbinit
|
||||
.project
|
||||
.cproject
|
||||
cscope.out
|
||||
/Make.dep
|
||||
/.depend
|
||||
|
@ -119,7 +119,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -27,6 +27,9 @@ STATUS
|
||||
NuttX. But no work has yet been done for this board port other
|
||||
than writing this README file.
|
||||
|
||||
o 2017-06-13: I just learned that development boards will not be
|
||||
available for another month.
|
||||
|
||||
Board Features
|
||||
==============
|
||||
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_ARM7TDMI=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_ARM7TDMI=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_ARM7TDMI=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -304,10 +304,10 @@ Configurations
|
||||
If you do this a lot, you will probably want to invest a little time
|
||||
to develop a tool to automate these steps.
|
||||
|
||||
mrf24j40-radio
|
||||
mrf24j40-mac
|
||||
|
||||
This is a version of nsh that was used for testing the MRF24J40 be as a
|
||||
character device. The most important configuration differences are
|
||||
This is a version of nsh that was used for testing the MRF24J40 MAC be
|
||||
as a character device. The most important configuration differences are
|
||||
summarized below:
|
||||
|
||||
1. Support for the BEE click and SPI are in enabled in the mikroBUS1 slot:
|
||||
@ -327,7 +327,11 @@ Configurations
|
||||
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_WIRELESS_IEEE802154=y
|
||||
CONFIG_IEEE802154_DEV=y
|
||||
CONFIG_IEEE802154_MAC_DEV=y
|
||||
CONFIG_IEEE802154_NTXDESC=3
|
||||
CONFIG_IEEE802154_IND_PREALLOC=20
|
||||
CONFIG_IEEE802154_IND_IRQRESERVE=10
|
||||
CONFIG_IEEE802154_DEFAULT_EADDR=0x00fade00deadbeef
|
||||
|
||||
5. Support for the lower half MRF24J40 character driver is enabled
|
||||
|
||||
@ -335,17 +339,103 @@ Configurations
|
||||
CONFIG_DRIVERS_IEEE802154=y
|
||||
CONFIG_IEEE802154_MRF24J40=y
|
||||
|
||||
6. Support for the test program at apps/ieee802154 is enabled:
|
||||
6. Support for the i8sak test program at apps/ieee802154 is enabled:
|
||||
|
||||
CONFIG_IEEE802154_COMMON=y
|
||||
CONFIG_IEEE802154_COORD=y
|
||||
CONFIG_IEEE802154_LIBMAC=y
|
||||
CONFIG_IEEE802154_LIBUTILS=y
|
||||
CONFIG_IEEE802154_I8SAK=y
|
||||
CONFIG_IEEE802154_I8SAK_PRIORITY=100
|
||||
CONFIG_IEEE802154_I8SAK_STACKSIZE=2048
|
||||
|
||||
7. Initialization hooks are provided to enable the MRF24J40 and to
|
||||
register the radio character driver.
|
||||
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
|
||||
8. Configuration instructions: WPAN configuration must be performed
|
||||
using the i8sak program. Detailed instructions are provided in a
|
||||
README.txt file at apps/wireless/ieee802154/i8sak. You should make
|
||||
sure that you are familiar with the content of that README.txt file.
|
||||
|
||||
Here is a quick "cheat sheet" for associated to setting up a
|
||||
coordinator and associating wth the WPAN:
|
||||
|
||||
1. Configure the Coordinator. On coordinator device do:
|
||||
|
||||
nsh> i8 /dev/ieee0 startpan
|
||||
nsh> i8 acceptassoc
|
||||
|
||||
2. Assocate and endpoint device with the WPAN. On the endpoint
|
||||
device:
|
||||
|
||||
nsh> i8 /dev/ieee0 assoc
|
||||
|
||||
mrf24j40-6lowpan
|
||||
|
||||
This is another version of nsh that is very similar to the mrf24j40-mac
|
||||
configuration but is focused on testing the IEEE 802.15.4 MAC
|
||||
integration with the 6loWPAN network stack. It derives directly from the
|
||||
mrf24j40-mac and all NOTES provided there apply. Additional differences
|
||||
are summarized below:
|
||||
|
||||
NOTES:
|
||||
|
||||
1. This configuration differs from the mrf24j40-mac configuration in
|
||||
that this configuration, like the usbnsh configuration, uses a USB
|
||||
serial device for console I/O. Such a configuration is useful on the
|
||||
Clicker2 STM32 which has no builtin RS-232 drivers and eliminates the
|
||||
tangle of cables and jumpers needed to debug multi-board setups.
|
||||
|
||||
Most other NOTES for the usbnsh configuration should apply. Specific
|
||||
differences between the usbnsh or mrf24j40-mac configurations and this
|
||||
configuration are listed in these NOTES.
|
||||
|
||||
2. On most serial terminal programs that I have used, the USB
|
||||
connection will be lost when the target board is reset. When that
|
||||
happens, you may have to reset your serial terminal program to adapt
|
||||
to the new USB connection. Using TeraTerm, I actually have to exit
|
||||
the serial program and restart it in order to detect and select the
|
||||
re-established USB serial connection.
|
||||
|
||||
3. This configuration does NOT have USART3 output enabled. This
|
||||
configuration supports logging of debug output to a circular
|
||||
buffer in RAM. This feature is discussed fully in this Wiki page:
|
||||
http://nuttx.org/doku.php?id=wiki:howtos:syslog . Relevant
|
||||
configuration settings are summarized below:
|
||||
|
||||
Device Drivers:
|
||||
CONFIG_RAMLOG=y : Enable the RAM-based logging feature.
|
||||
CONFIG_RAMLOG_CONSOLE=n : (We don't use the RAMLOG console)
|
||||
CONFIG_RAMLOG_SYSLOG=y : This enables the RAM-based logger as the
|
||||
system logger.
|
||||
CONFIG_RAMLOG_NONBLOCKING=y : Needs to be non-blocking for dmesg
|
||||
CONFIG_RAMLOG_BUFSIZE=8192 : Buffer size is 8KiB
|
||||
|
||||
NOTE: This RAMLOG feature is really only of value if debug output
|
||||
is enabled. But, by default, no debug output is disabled in this
|
||||
configuration. Therefore, there is no logic that will add anything
|
||||
to the RAM buffer. This feature is configured and in place only
|
||||
to support any future debugging needs that you may have.
|
||||
|
||||
If you don't plan on using the debug features, then by all means
|
||||
disable this feature and save 8KiB of RAM!
|
||||
|
||||
NOTE: There is an issue with capturing data in the RAMLOG: If
|
||||
the system crashes, all of the crash dump information will go into
|
||||
the RAMLOG and you will be unable to access it! You can tell that
|
||||
the system has crashed because (a) it will be unresponsive and (b)
|
||||
the LD2 will be blinking at about 2Hz.
|
||||
|
||||
4. IPv6 networking is enabled with TCP/IP, UDP, 6loWPAN, and NSH
|
||||
Telnet support.
|
||||
|
||||
5. Configuration instructions: Basic PAN configuration is the same as
|
||||
for the ieee802154-mac configuration with the exception that after
|
||||
the PAN has been configured with the i8sak utility, you must
|
||||
explicity bring the network up:
|
||||
|
||||
nsh> ifup wpan0
|
||||
|
||||
nsh:
|
||||
|
||||
Configures the NuttShell (nsh) located at examples/nsh. This
|
||||
@ -371,7 +461,6 @@ Configurations
|
||||
CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y
|
||||
|
||||
usbnsh:
|
||||
-------
|
||||
|
||||
This is another NSH example. If differs from other 'nsh' configurations
|
||||
in that this configurations uses a USB serial device for console I/O.
|
||||
@ -380,7 +469,14 @@ Configurations
|
||||
|
||||
NOTES:
|
||||
|
||||
1. This configuration does have USART3 output enabled and set up as
|
||||
1. One most serial terminal programs that I have used, the USB
|
||||
connection will be lost when the target board is reset. When that
|
||||
happens, you may have to reset your serial terminal program to adapt
|
||||
to the new USB connection. Using TeraTerm, I actually have to exit
|
||||
the serial program and restart it in order to detect and select the
|
||||
re-established USB serial connection.
|
||||
|
||||
2. This configuration does have USART3 output enabled and set up as
|
||||
the system logging device:
|
||||
|
||||
CONFIG_SYSLOG_CHAR=y : Use a character device for system logging
|
||||
@ -390,7 +486,7 @@ Configurations
|
||||
configuration so nothing should appear on USART3 unless you enable
|
||||
some debug output or enable the USB monitor.
|
||||
|
||||
2. Enabling USB monitor SYSLOG output. If tracing is enabled, the USB
|
||||
3. Enabling USB monitor SYSLOG output. If tracing is enabled, the USB
|
||||
device will save encoded trace output in in-memory buffer; if the
|
||||
USB monitor is enabled, that trace buffer will be periodically
|
||||
emptied and dumped to the system logging device (USART3 in this
|
||||
|
@ -125,7 +125,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
122
configs/clicker2-stm32/mrf24j40-6lowpan/Make.defs
Normal file
122
configs/clicker2-stm32/mrf24j40-6lowpan/Make.defs
Normal file
@ -0,0 +1,122 @@
|
||||
############################################################################
|
||||
# configs/clicker2-stm32/mrf24j40-6lowpan/Make.defs
|
||||
#
|
||||
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name NuttX nor the names of its contributors may be
|
||||
# used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
include ${TOPDIR}/.config
|
||||
include ${TOPDIR}/tools/Config.mk
|
||||
include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
|
||||
|
||||
LDSCRIPT = flash.ld
|
||||
|
||||
ifeq ($(WINTOOL),y)
|
||||
# Windows-native toolchains
|
||||
DIRLINK = $(TOPDIR)/tools/copydir.sh
|
||||
DIRUNLINK = $(TOPDIR)/tools/unlink.sh
|
||||
MKDEP = $(TOPDIR)/tools/mkwindeps.sh
|
||||
ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
|
||||
ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
|
||||
ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)}"
|
||||
else
|
||||
# Linux/Cygwin-native toolchain
|
||||
MKDEP = $(TOPDIR)/tools/mkdeps$(HOSTEXEEXT)
|
||||
ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
|
||||
ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx
|
||||
ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)
|
||||
endif
|
||||
|
||||
CC = $(CROSSDEV)gcc
|
||||
CXX = $(CROSSDEV)g++
|
||||
CPP = $(CROSSDEV)gcc -E
|
||||
LD = $(CROSSDEV)ld
|
||||
AR = $(CROSSDEV)ar rcs
|
||||
NM = $(CROSSDEV)nm
|
||||
OBJCOPY = $(CROSSDEV)objcopy
|
||||
OBJDUMP = $(CROSSDEV)objdump
|
||||
|
||||
ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
|
||||
ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
|
||||
|
||||
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
|
||||
ARCHOPTIMIZATION = -g
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_DEBUG_NOOPT),y)
|
||||
ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer
|
||||
endif
|
||||
|
||||
ARCHCFLAGS = -fno-builtin
|
||||
ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
|
||||
ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
|
||||
ARCHWARNINGSXX = -Wall -Wshadow -Wundef
|
||||
ARCHDEFINES =
|
||||
ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
|
||||
|
||||
CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
|
||||
CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
|
||||
CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
|
||||
CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
|
||||
CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
|
||||
AFLAGS = $(CFLAGS) -D__ASSEMBLY__
|
||||
|
||||
NXFLATLDFLAGS1 = -r -d -warn-common
|
||||
NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-gotoff.ld -no-check-sections
|
||||
LDNXFLATFLAGS = -e main -s 2048
|
||||
|
||||
# Loadable module definitions
|
||||
|
||||
CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
|
||||
|
||||
LDMODULEFLAGS = -r -e module_initialize
|
||||
ifeq ($(WINTOOL),y)
|
||||
LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libc/modlib/gnu-elf.ld}"
|
||||
else
|
||||
LDMODULEFLAGS += -T $(TOPDIR)/libc/modlib/gnu-elf.ld
|
||||
endif
|
||||
|
||||
ASMEXT = .S
|
||||
OBJEXT = .o
|
||||
LIBEXT = .a
|
||||
EXEEXT =
|
||||
|
||||
ifneq ($(CROSSDEV),arm-nuttx-elf-)
|
||||
LDFLAGS += -nostartfiles -nodefaultlibs
|
||||
endif
|
||||
ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
|
||||
LDFLAGS += -g
|
||||
endif
|
||||
|
||||
HOSTCC = gcc
|
||||
HOSTINCLUDES = -I.
|
||||
HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
|
||||
HOSTLDFLAGS =
|
1578
configs/clicker2-stm32/mrf24j40-6lowpan/defconfig
Normal file
1578
configs/clicker2-stm32/mrf24j40-6lowpan/defconfig
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
############################################################################
|
||||
# configs/clicker2-stm32/mrf24j40-radio/Make.defs
|
||||
# configs/clicker2-stm32/mrf24j40-mac/Make.defs
|
||||
#
|
||||
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
@ -16,7 +16,7 @@ CONFIG_HOST_LINUX=y
|
||||
#
|
||||
# Build Configuration
|
||||
#
|
||||
CONFIG_APPS_DIR="../apps"
|
||||
# CONFIG_APPS_DIR="../apps"
|
||||
CONFIG_BUILD_FLAT=y
|
||||
# CONFIG_BUILD_2PASS is not set
|
||||
|
||||
@ -120,12 +120,11 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
CONFIG_ARCH_CHIP="stm32"
|
||||
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||
# CONFIG_ARMV7M_USEBASEPRI is not set
|
||||
CONFIG_ARCH_HAVE_CMNVECTOR=y
|
||||
# CONFIG_ARMV7M_CMNVECTOR is not set
|
||||
@ -534,6 +533,7 @@ CONFIG_STM32_USART3_SERIALDRIVER=y
|
||||
#
|
||||
# USB Device Configuration
|
||||
#
|
||||
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||
CONFIG_ARCH_TOOLCHAIN_GNU=y
|
||||
|
||||
#
|
||||
@ -979,6 +979,7 @@ CONFIG_IOB_NCHAINS=0
|
||||
#
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_WIRELESS_IEEE802154=y
|
||||
CONFIG_IEEE802154_DEFAULT_EADDR=0x00fade00deadbeef
|
||||
CONFIG_IEEE802154_MAC_DEV=y
|
||||
CONFIG_MAC802154_HPWORK=y
|
||||
CONFIG_IEEE802154_NTXDESC=3
|
||||
@ -1109,7 +1110,6 @@ CONFIG_LIB_SENDFILE_BUFSIZE=512
|
||||
#
|
||||
# CONFIG_C99_BOOL8 is not set
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
# CONFIG_CXX_NEWLONG is not set
|
||||
|
||||
#
|
||||
@ -1340,6 +1340,7 @@ CONFIG_NSH_ARCHINIT=y
|
||||
# Platform-specific Support
|
||||
#
|
||||
# CONFIG_PLATFORM_CONFIGDATA is not set
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
|
||||
#
|
||||
# System Libraries and NSH Add-Ons
|
@ -120,12 +120,11 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
CONFIG_ARCH_CHIP="stm32"
|
||||
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||
# CONFIG_ARMV7M_USEBASEPRI is not set
|
||||
CONFIG_ARCH_HAVE_CMNVECTOR=y
|
||||
# CONFIG_ARMV7M_CMNVECTOR is not set
|
||||
@ -394,6 +393,7 @@ CONFIG_STM32_HAVE_I2C2=y
|
||||
CONFIG_STM32_HAVE_I2C3=y
|
||||
CONFIG_STM32_HAVE_SPI2=y
|
||||
CONFIG_STM32_HAVE_SPI3=y
|
||||
CONFIG_STM32_HAVE_I2S3=y
|
||||
# CONFIG_STM32_HAVE_SPI4 is not set
|
||||
# CONFIG_STM32_HAVE_SPI5 is not set
|
||||
# CONFIG_STM32_HAVE_SPI6 is not set
|
||||
@ -432,6 +432,7 @@ CONFIG_STM32_PWR=y
|
||||
# CONFIG_STM32_SPI1 is not set
|
||||
# CONFIG_STM32_SPI2 is not set
|
||||
# CONFIG_STM32_SPI3 is not set
|
||||
# CONFIG_STM32_I2S3 is not set
|
||||
CONFIG_STM32_SYSCFG=y
|
||||
# CONFIG_STM32_TIM1 is not set
|
||||
# CONFIG_STM32_TIM2 is not set
|
||||
@ -527,6 +528,7 @@ CONFIG_STM32_USART3_SERIALDRIVER=y
|
||||
#
|
||||
# USB Device Configuration
|
||||
#
|
||||
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||
CONFIG_ARCH_TOOLCHAIN_GNU=y
|
||||
|
||||
#
|
||||
@ -1075,7 +1077,6 @@ CONFIG_LIB_SENDFILE_BUFSIZE=512
|
||||
#
|
||||
# CONFIG_C99_BOOL8 is not set
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
# CONFIG_CXX_NEWLONG is not set
|
||||
|
||||
#
|
||||
@ -1305,6 +1306,7 @@ CONFIG_NSH_CONSOLE=y
|
||||
# Platform-specific Support
|
||||
#
|
||||
# CONFIG_PLATFORM_CONFIGDATA is not set
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
|
||||
#
|
||||
# System Libraries and NSH Add-Ons
|
||||
|
@ -255,7 +255,7 @@ static int stm32_mrf24j40_devsetup(FAR struct stm32_priv_s *priv)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_IEEE802154_NETDEV)
|
||||
#ifdef CONFIG_IEEE802154_NETDEV
|
||||
/* Use the IEEE802.15.4 MAC interface instance to create a 6loWPAN
|
||||
* network interface by wrapping the MAC intrface instance in a
|
||||
* network device driver via mac802154dev_register().
|
||||
@ -268,7 +268,9 @@ static int stm32_mrf24j40_devsetup(FAR struct stm32_priv_s *priv)
|
||||
0, ret);
|
||||
return ret;
|
||||
}
|
||||
#elif defined(CONFIG_IEEE802154_MAC_DEV)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IEEE802154_MAC_DEV
|
||||
/* If want to call these APIs from userspace, you have to wrap the MAC
|
||||
* interface in a character device viamac802154dev_register().
|
||||
*/
|
||||
|
@ -120,12 +120,11 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
CONFIG_ARCH_CHIP="stm32"
|
||||
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||
# CONFIG_ARMV7M_USEBASEPRI is not set
|
||||
CONFIG_ARCH_HAVE_CMNVECTOR=y
|
||||
# CONFIG_ARMV7M_CMNVECTOR is not set
|
||||
@ -394,6 +393,7 @@ CONFIG_STM32_HAVE_I2C2=y
|
||||
CONFIG_STM32_HAVE_I2C3=y
|
||||
CONFIG_STM32_HAVE_SPI2=y
|
||||
CONFIG_STM32_HAVE_SPI3=y
|
||||
CONFIG_STM32_HAVE_I2S3=y
|
||||
# CONFIG_STM32_HAVE_SPI4 is not set
|
||||
# CONFIG_STM32_HAVE_SPI5 is not set
|
||||
# CONFIG_STM32_HAVE_SPI6 is not set
|
||||
@ -432,6 +432,7 @@ CONFIG_STM32_PWR=y
|
||||
# CONFIG_STM32_SPI1 is not set
|
||||
# CONFIG_STM32_SPI2 is not set
|
||||
# CONFIG_STM32_SPI3 is not set
|
||||
# CONFIG_STM32_I2S3 is not set
|
||||
CONFIG_STM32_SYSCFG=y
|
||||
# CONFIG_STM32_TIM1 is not set
|
||||
# CONFIG_STM32_TIM2 is not set
|
||||
@ -527,6 +528,7 @@ CONFIG_STM32_USART3_SERIALDRIVER=y
|
||||
#
|
||||
# USB Device Configuration
|
||||
#
|
||||
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||
CONFIG_ARCH_TOOLCHAIN_GNU=y
|
||||
|
||||
#
|
||||
@ -1124,7 +1126,6 @@ CONFIG_LIB_SENDFILE_BUFSIZE=512
|
||||
#
|
||||
# CONFIG_C99_BOOL8 is not set
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
# CONFIG_CXX_NEWLONG is not set
|
||||
|
||||
#
|
||||
@ -1356,6 +1357,7 @@ CONFIG_NSH_ARCHINIT=y
|
||||
# Platform-specific Support
|
||||
#
|
||||
# CONFIG_PLATFORM_CONFIGDATA is not set
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
|
||||
#
|
||||
# System Libraries and NSH Add-Ons
|
||||
|
@ -125,7 +125,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_ARM926EJS=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -125,7 +125,7 @@ CONFIG_ARCH_ARM926EJS=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_ARM926EJS=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_ARM926EJS=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="arm"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -125,7 +125,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -348,6 +348,24 @@
|
||||
#define PIN_I2C0_SCL PIN_I2C0_SCL_3
|
||||
#define PIN_I2C0_SDA PIN_I2C0_SDA_3
|
||||
|
||||
/* RF/WIFI
|
||||
*
|
||||
* J6 Pin Name K66 Name
|
||||
* ------ ----- ------ ---------
|
||||
* 1 GND
|
||||
* 2 P3V3
|
||||
* 3 CE PTB20 PTB20
|
||||
* 4 CS PTD4 SPI1_PCS0 (use as GPIO)
|
||||
* 5 SCK PTD5 SPI1_SCK
|
||||
* 6 MOSI PTD6 SPI1_MOSI
|
||||
* 7 MISO PTD7 SPI1_MISO
|
||||
* 8 IRQ PTC18 PTC18
|
||||
*/
|
||||
|
||||
#define PIN_SPI1_SCK PIN_SPI1_SCK_3
|
||||
#define PIN_SPI1_OUT PIN_SPI1_SOUT_3
|
||||
#define PIN_SPI1_SIN PIN_SPI1_SIN_3
|
||||
|
||||
/*
|
||||
* Ethernet MAC/KSZ8081 PHY
|
||||
* ------------------------
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -119,7 +119,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
@ -223,7 +223,7 @@ CONFIG_KINETIS_UART4=y
|
||||
# CONFIG_KINETIS_FLEXCAN0 is not set
|
||||
# CONFIG_KINETIS_FLEXCAN1 is not set
|
||||
# CONFIG_KINETIS_SPI0 is not set
|
||||
# CONFIG_KINETIS_SPI1 is not set
|
||||
CONFIG_KINETIS_SPI1=y
|
||||
# CONFIG_KINETIS_SPI2 is not set
|
||||
CONFIG_KINETIS_I2C0=y
|
||||
# CONFIG_KINETIS_I2C1 is not set
|
||||
@ -546,7 +546,15 @@ CONFIG_I2C_DRIVER=y
|
||||
# CONFIG_ARCH_HAVE_SPI_CRCGENERATION is not set
|
||||
# CONFIG_ARCH_HAVE_SPI_CS_CONTROL is not set
|
||||
# CONFIG_ARCH_HAVE_SPI_BITORDER is not set
|
||||
# CONFIG_SPI is not set
|
||||
CONFIG_SPI=y
|
||||
# CONFIG_SPI_SLAVE is not set
|
||||
CONFIG_SPI_EXCHANGE=y
|
||||
# CONFIG_SPI_CMDDATA is not set
|
||||
# CONFIG_SPI_CALLBACK is not set
|
||||
# CONFIG_SPI_HWFEATURES is not set
|
||||
CONFIG_SPI_CS_DELAY_CONTROL=y
|
||||
# CONFIG_SPI_DRIVER is not set
|
||||
# CONFIG_SPI_BITBANG is not set
|
||||
# CONFIG_I2S is not set
|
||||
|
||||
#
|
||||
@ -576,6 +584,7 @@ CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_ADS7843E is not set
|
||||
# CONFIG_INPUT_MXT is not set
|
||||
# CONFIG_INPUT_STMPE811 is not set
|
||||
# CONFIG_INPUT_CYPRESS_MBR3108 is not set
|
||||
CONFIG_BUTTONS=y
|
||||
CONFIG_BUTTONS_LOWER=y
|
||||
CONFIG_BUTTONS_NPOLLWAITERS=2
|
||||
@ -607,6 +616,7 @@ CONFIG_MMCSD_NSLOTS=1
|
||||
CONFIG_MMCSD_MULTIBLOCK_DISABLE=y
|
||||
CONFIG_MMCSD_MMCSUPPORT=y
|
||||
CONFIG_MMCSD_HAVECARDDETECT=y
|
||||
# CONFIG_MMCSD_SPI is not set
|
||||
CONFIG_ARCH_HAVE_SDIO=y
|
||||
# CONFIG_SDIO_DMA is not set
|
||||
# CONFIG_ARCH_HAVE_SDIOWAIT_WRCOMPLETE is not set
|
||||
|
@ -57,6 +57,7 @@
|
||||
#define HAVE_PROC 1
|
||||
#define HAVE_MMCSD 1
|
||||
#define HAVE_AUTOMOUNTER 1
|
||||
#define HAVE_SPI 1
|
||||
#define HAVE_USBDEV 1
|
||||
|
||||
#if defined(CONFIG_KINETIS_RTC)
|
||||
@ -173,6 +174,11 @@
|
||||
# undef CONFIG_KINETIS_SPI2
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_KINETIS_SPI0) && !defined(CONFIG_KINETIS_SPI1) && \
|
||||
!defined(CONFIG_KINETIS_SPI3)
|
||||
# undef HAVE_SPI
|
||||
#endif
|
||||
|
||||
/* FREEDOM-K66F GPIOs ****************************************************************/
|
||||
/* A micro Secure Digital (SD) card slot is available on the FRDM-K66F connected to
|
||||
* the SD Host Controller (SDHC) signals of the MCU. This slot will accept micro
|
||||
@ -223,6 +229,11 @@
|
||||
#define GPIO_LED_G (GPIO_LOWDRIVE | GPIO_OUTPUT_ONE | PIN_PORTE | PIN6)
|
||||
#define GPIO_LED_B (GPIO_LOWDRIVE | GPIO_OUTPUT_ONE | PIN_PORTA | PIN11)
|
||||
|
||||
/* SPI1 on J6 */
|
||||
|
||||
#define PIN_CE (GPIO_LOWDRIVE | GPIO_OUTPUT_ONE | PIN_PORTB | PIN20)
|
||||
#define PIN_SPI1_PCS0 (GPIO_LOWDRIVE | GPIO_OUTPUT_ONE | PIN_PORTD | PIN4)
|
||||
|
||||
/************************************************************************************
|
||||
* Public data
|
||||
************************************************************************************/
|
||||
|
@ -47,8 +47,10 @@
|
||||
#include <debug.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#include <nuttx/spi/spi.h>
|
||||
#include <nuttx/input/buttons.h>
|
||||
|
||||
#include "kinetis_spi.h"
|
||||
#include "freedom-k66f.h"
|
||||
|
||||
#if defined(CONFIG_LIB_BOARDCTL) || defined(CONFIG_BOARD_INITIALIZE)
|
||||
@ -67,6 +69,9 @@
|
||||
|
||||
int k66_bringup(void)
|
||||
{
|
||||
#ifdef HAVE_SPI
|
||||
FAR struct spi_dev_s *spi1;
|
||||
#endif
|
||||
int ret;
|
||||
|
||||
#ifdef HAVE_PROC
|
||||
@ -151,8 +156,20 @@ int k66_bringup(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SPI
|
||||
|
||||
/* Verify we can initialize SPI bus 1 */
|
||||
|
||||
spi1 = kinetis_spibus_initialize(1);
|
||||
|
||||
if (!spi1)
|
||||
{
|
||||
syslog(LOG_ERR, "ERROR:FAILED to initialize SPI port 1\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
UNUSED(ret);
|
||||
return OK;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_LIB_BOARDCTL CONFIG_BOARD_INITIALIZE */
|
||||
|
@ -53,7 +53,7 @@
|
||||
#include "freedom-k66f.h"
|
||||
|
||||
#if defined(CONFIG_KINETIS_SPI0) || defined(CONFIG_KINETIS_SPI1) || \
|
||||
defined(CONFIG_KINETIS_SPI2)
|
||||
defined(CONFIG_KINETIS_SPI2)
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
@ -69,7 +69,10 @@
|
||||
|
||||
void weak_function k66_spidev_initialize(void)
|
||||
{
|
||||
# warning "Missing logic"
|
||||
/* Initialize the CE CS pins on J6 RF/WIFI connector */
|
||||
|
||||
kinetis_pinconfig(PIN_CE);
|
||||
kinetis_pinconfig(PIN_SPI1_PCS0);
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
@ -118,7 +121,7 @@ uint8_t kinetis_spi0status(FAR struct spi_dev_s *dev, uint32_t devid)
|
||||
void kinetis_spi1select(FAR struct spi_dev_s *dev, uint32_t devid, bool selected)
|
||||
{
|
||||
spiinfo("devid: %d CS: %s\n", (int)devid, selected ? "assert" : "de-assert");
|
||||
# warning "Missing logic"
|
||||
kinetis_gpiowrite(PIN_SPI1_PCS0, !selected);
|
||||
}
|
||||
|
||||
uint8_t kinetis_spi1status(FAR struct spi_dev_s *dev, uint32_t devid)
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM0=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv6-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM0=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv6-m"
|
||||
|
@ -117,7 +117,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -117,7 +117,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -117,7 +117,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -117,7 +117,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -117,7 +117,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_CHIP_TMS570=y
|
||||
CONFIG_ARCH_CORTEXR4=y
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-r"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -124,7 +124,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -122,7 +122,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM4=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM0=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv6-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -118,7 +118,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -116,7 +116,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
@ -117,7 +117,7 @@ CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXR4 is not set
|
||||
# CONFIG_ARCH_CORTEXR4F is not set
|
||||
# CONFIG_ARCH_CORTEXR5 is not set
|
||||
# CONFIG_ARCH_CORTEX5F is not set
|
||||
# CONFIG_ARCH_CORTEXR5F is not set
|
||||
# CONFIG_ARCH_CORTEXR7 is not set
|
||||
# CONFIG_ARCH_CORTEXR7F is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user