Skip to content

Pr chibios f274521d9942d7f383a4a45f83ec91f2365709fc #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 75 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
e793049
ext: fatfs-0.14b
andyp1per Feb 1, 2023
b960401
STM32F4xx: bit definitions for I2C_FLTR register
andyp1per Feb 2, 2023
ad437f4
ports: support PORT_IRQ_ATTRIBUTES and CH_CFG_STACK_OVERFLOW_HOOK
andyp1per Feb 2, 2023
dc1daf1
startup: support RAMFUNCS initialization
andyp1per Feb 2, 2023
3fce052
hal: support eicu driver
andyp1per Feb 2, 2023
2d4e2bb
hal_i2c: support I2C_ISR_LIMIT and i2cSoftStop
andyp1per Feb 2, 2023
5a187c6
osal: allow osalDbgAssert to be redefined
andyp1per Feb 2, 2023
d922305
ADCv2: remove hardcoded ADC DMA streams
andyp1per Feb 2, 2023
1d66795
ADCv4: correct ADC clocks and BDMA usage
andyp1per Feb 2, 2023
feba052
BDMAv1: initialize streamids correctly
andyp1per Feb 2, 2023
efe0a0d
DMAv2: initialize streamids correctly
andyp1per Feb 2, 2023
57d5e8e
I2Cv1: support I2C_FLTR_ANOFF, STM32_I2C_ISR_LIMIT and i2c_lld_soft_stop
andyp1per Feb 2, 2023
f86a196
I2Cv2: support STM32_I2C_ISR_LIMIT and i2c_lld_soft_stop
andyp1per Feb 2, 2023
2b551ef
I2Cv3: support STM32_I2C_ISR_LIMIT and i2c_lld_soft_stop
andyp1per Feb 2, 2023
c983a59
QUADSPIv2: clear tx flags
andyp1per Feb 2, 2023
1fe6a0f
SPIv1: reset clocks before enabling peripheral
andyp1per Feb 2, 2023
f1921d7
SPIv2: reset clocks before enabling peripheral
andyp1per Feb 2, 2023
bb7ee5f
SPIv3: reset clocks before enabling peripheral
andyp1per Feb 2, 2023
3525596
TIMv1: add support for EICU
andyp1per Feb 2, 2023
86f8301
USARTv1: support IRQ callbacks
andyp1per Feb 2, 2023
03ef8b1
USARTv2: support IRQ callbacks
andyp1per Feb 2, 2023
8f12619
USARTv3: support IRQ callbacks
andyp1per Feb 2, 2023
2c67e35
STM32F1xx: allow PLLs to be disabled
andyp1per Feb 2, 2023
ef17497
STM32F4xx: check HAL_USE_I2S for PLLI2S
andyp1per Feb 2, 2023
743b378
STM32F7xx: add support for TIM8 and I2C4
andyp1per Feb 2, 2023
51b24b1
STM32H7xx: correct SDMMC, PLL2 and PLL3 clock checks
andyp1per Feb 2, 2023
a77c4fb
hal_mmc: correct MMC driver, add support for SPI hooks and read/write…
andyp1per Feb 2, 2023
8f1637b
hal_i2c: add support for i2cSoftStop
andyp1per Feb 2, 2023
7ba0656
rt: fix compilation warnings in kernel
andyp1per Feb 2, 2023
483bc42
chtime: optimize time intervals for 1Mhz CH_CFG_ST_FREQUENCY
andyp1per Feb 2, 2023
1893346
fatfs_bindings: add support for op retries
andyp1per Feb 2, 2023
41b248f
various: conditonally remove redefined syscalls on ardupilot
andyp1per Feb 2, 2023
7f30b1e
OTGv1: enable USB with WFI
andyp1per Feb 2, 2023
4919caa
boards: add ArduPilot_H743
andyp1per Feb 2, 2023
0844533
STM32/LLD/TIMv1: we don't always go for whole number prescalers
bugobliterator Feb 7, 2023
debd80a
STM32H7xx: add option to enable knowledge of M4 CPU core
bugobliterator Feb 7, 2023
7d8cf67
hal_sdc: always set some kind of clock in SDC driver
andyp1per Feb 2, 2023
53eea63
wait longer before checking mmc large capacity
bugobliterator Feb 17, 2023
a15bc6a
hal_usb_msd: add support for USB MSD
andyp1per Feb 21, 2023
237906f
OTGv1: increase OTG_HS FIFO memory size
andyp1per Feb 21, 2023
6ca5b2e
SDMMCv2: add support for bouncebuffers
andyp1per Feb 2, 2023
f0dc112
SDIOv1: add support for bouncebuffers
andyp1per Feb 2, 2023
a72bb00
SDMMCv1: add support for bouncebuffers
andyp1per Feb 2, 2023
06218ec
SPIv1/SPIv2/SPIv3: use driver model v1
andyp1per Mar 30, 2023
7ee024f
TIMv1: missing EICU ISRs
andyp1per Mar 30, 2023
dd2138d
TIMv1: enable timers when using EICU
andyp1per Apr 5, 2023
aa48a17
ADCv4: add support to select ADC12 DUAL operation mode
bugobliterator Apr 7, 2023
f591786
ARMCMx: remove instram startup code
andyp1per Apr 20, 2023
b10431f
Fixed OSPI reset handling.
Apr 9, 2023
89f47ad
Fixed bug #1261.
Apr 25, 2023
8120181
mmc_spi: added bus acquire hooks
tridge May 13, 2023
7700db4
FATFS: disable ff_memalloc function for ArduPilot
tridge Jun 3, 2023
bd03018
added chMtxForceReleaseS
tridge Jun 15, 2023
259c839
lwip: update to lwip stable 2.1.3
tridge May 30, 2023
61bb640
lwip_bindings: don't use old Sleep api
magicrub Jul 3, 2023
90c9d80
lwip_bindings: add IPV6 functions as well
bugobliterator Feb 3, 2022
e6fdd99
add lwipthread.c accessors lwipGetIp(), lwipGetNetmask(), lwipGetGate…
magicrub Mar 24, 2023
210a9d7
use thread_create_alloc instead of chThdCreateFromHeap
bugobliterator Mar 25, 2023
0b941d4
lwip_bindings: use millis32 method impelmented in ardupilot
magicrub Jul 3, 2023
8c257d9
Enable LwIP Apps
magicrub Mar 26, 2023
109b5bb
use malloc and free for lwip when in ardupilot
bugobliterator Mar 29, 2023
5aa2135
mac: allow macInit() to fail
tridge May 29, 2023
95e3f98
mac: for ArduPilot don't do macInit() on startup
tridge May 29, 2023
cd18137
STM32/LLD/MACv2: add support for external mac buffers
bugobliterator Jul 15, 2023
1af120d
lwip_bindings: fix get ip netmask and gateway to use the values from …
bugobliterator Jul 28, 2023
32ab08c
Bump requests from 2.26.0 to 2.31.0 in /tools/workflows
dependabot[bot] May 23, 2023
5a6fbf0
build(deps): bump certifi in /tools/workflows
dependabot[bot] Mar 29, 2023
e2e1780
lwip: update to STABLE-2_2_0_RELEASE
tridge Nov 25, 2023
1dfdadf
lwip: enable IGMP in netif if enabled in options
tridge Nov 25, 2023
e9573b7
Remove lwip
tridge Dec 25, 2023
19a1a31
hal: add DP83825I for ethernet
andyp1per Feb 12, 2024
522a86c
MAVv2: fixed shift of BOARD_PHY_ADDRESS
tridge Sep 1, 2024
04f2e24
USARTv3: support IRQ callbacks
bugobliterator Jan 17, 2025
3ed6ec3
rt: allow compilation with asserts enabled
andyp1per Jul 10, 2025
329ae76
hal: STM32L496 does not have ADC5
andyp1per Jul 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .gitmodules
Empty file.
24 changes: 24 additions & 0 deletions ext/fatfs/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
FatFs License

FatFs has being developped as a personal project of the author, ChaN. It is free from the code anyone else wrote at current release. Following code block shows a copy of the FatFs license document that heading the source files.

/*----------------------------------------------------------------------------/
/ FatFs - Generic FAT Filesystem Module Rx.xx /
/-----------------------------------------------------------------------------/
/
/ Copyright (C) 20xx, ChaN, all right reserved.
/
/ FatFs module is an open source software. Redistribution and use of FatFs in
/ source and binary forms, with or without modification, are permitted provided
/ that the following condition is met:
/
/ 1. Redistributions of source code must retain the above copyright notice,
/ this condition and the following disclaimer.
/
/ This software is provided by the copyright holder and contributors "AS IS"
/ and any warranties related to this software are DISCLAIMED.
/ The copyright owner or contributors be NOT LIABLE for any damages caused
/ by use of this software.
/----------------------------------------------------------------------------*/

Therefore FatFs license is one of the BSD-style licenses, but there is a significant feature. FatFs is mainly intended for embedded systems. In order to extend the usability for commercial products, the redistributions of FatFs in binary form, such as embedded code, binary library and any forms without source code, do not need to include about FatFs in the documentations. This is equivalent to the 1-clause BSD license. Of course FatFs is compatible with the most of open source software licenses include GNU GPL. When you redistribute the FatFs source code with changes or create a fork, the license can also be changed to GNU GPL, BSD-style license or any open source software license that not conflict with FatFs license.
149 changes: 149 additions & 0 deletions ext/fatfs/documents/00index_e.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="cache-control" content="no-cache">
<meta name="description" content="Open source FAT filesystem for embedded projects">
<link rel="start" title="Site Top" href="../../">
<link rel="up" title="Freewares" href="../../fsw_e.html">
<link rel="stylesheet" href="css_e.css" type="text/css" media="screen" title="ELM Default">
<title>FatFs - Generic FAT Filesystem Module</title>
</head>

<body>
<h1>FatFs - Generic FAT Filesystem Module</h1>
<hr>

<div class="abst">
<img src="res/layers.png" class="rset" width="245" height="255" alt="layer">
<p>FatFs is a generic FAT/exFAT filesystem module for small embedded systems. The FatFs module is written in compliance with ANSI C (C89) and completely separated from the disk I/O layer. Therefore it is independent of the platform. It can be incorporated into small microcontrollers with limited resource, such as 8051, PIC, AVR, ARM, Z80, RX and etc. Also Petit FatFs module for tiny microcontrollers is available <a href="http://elm-chan.org/fsw/ff/00index_p.html">here</a>.</p>

<h4>Features</h4>
<ul>
<li>DOS/Windows Compatible FAT/exFAT Filesystem.</li>
<li>Platform Independent. <a href="doc/appnote.html#port">Easy to port</a>.</li>
<li>Very Small <a href="doc/appnote.html#memory">Footprint</a> for Program Code and Work Area.</li>
<li>Various <a href="doc/config.html">Configuration Options</a> to Support for:
<ul>
<li>Long File Name in ANSI/OEM or Unicode.</li>
<li>exFAT Filesystem, 64-bit LBA and GPT for Huge Storages.</li>
<li>Thread Safe for RTOS.</li>
<li>Multiple Volumes. (Physical Drives and Partitions)</li>
<li>Variable Sector Size.</li>
<li>Multiple Code Pages Including DBCS.</li>
<li>Read-only, Optional APIs, I/O Buffer and etc...</li>
</ul>
</li>
</ul>
</div>


<div class="para">
<h3>Application Interface</h3>
<img src="res/layers1.png" class="rset" width="245" height="220" alt="layer">
<p>FatFs provides various filesystem functions for the applications as shown below.</p>
<ul>
<li>File Access
<ul>
<li><a href="doc/open.html">f_open</a> - Open/Create a file</li>
<li><a href="doc/close.html">f_close</a> - Close an open file</li>
<li><a href="doc/read.html">f_read</a> - Read data from the file</li>
<li><a href="doc/write.html">f_write</a> - Write data to the file</li>
<li><a href="doc/lseek.html">f_lseek</a> - Move read/write pointer, Expand size</li>
<li><a href="doc/truncate.html">f_truncate</a> - Truncate file size</li>
<li><a href="doc/sync.html">f_sync</a> - Flush cached data</li>
<li><a href="doc/forward.html">f_forward</a> - Forward data to the stream</li>
<li><a href="doc/expand.html">f_expand</a> - Allocate a contiguous block to the file</li>
<li><a href="doc/gets.html">f_gets</a> - Read a string</li>
<li><a href="doc/putc.html">f_putc</a> - Write a character</li>
<li><a href="doc/puts.html">f_puts</a> - Write a string</li>
<li><a href="doc/printf.html">f_printf</a> - Write a formatted string</li>
<li><a href="doc/tell.html">f_tell</a> - Get current read/write pointer</li>
<li><a href="doc/eof.html">f_eof</a> - Test for end-of-file</li>
<li><a href="doc/size.html">f_size</a> - Get size</li>
<li><a href="doc/error.html">f_error</a> - Test for an error</li>
</ul>
</li>
<li>Directory Access
<ul>
<li><a href="doc/opendir.html">f_opendir</a> - Open a directory</li>
<li><a href="doc/closedir.html">f_closedir</a> - Close an open directory</li>
<li><a href="doc/readdir.html">f_readdir</a> - Read a directory item</li>
<li><a href="doc/findfirst.html">f_findfirst</a> - Open a directory and read the first item matched</li>
<li><a href="doc/findnext.html">f_findnext</a> - Read a next item matched</li>
</ul>
</li>
<li>File and Directory Management
<ul>
<li><a href="doc/stat.html">f_stat</a> - Check existance of a file or sub-directory</li>
<li><a href="doc/unlink.html">f_unlink</a> - Remove a file or sub-directory</li>
<li><a href="doc/rename.html">f_rename</a> - Rename/Move a file or sub-directory</li>
<li><a href="doc/chmod.html">f_chmod</a> - Change attribute of a file or sub-directory</li>
<li><a href="doc/utime.html">f_utime</a> - Change timestamp of a file or sub-directory</li>
<li><a href="doc/mkdir.html">f_mkdir</a> - Create a sub-directory</li>
<li><a href="doc/chdir.html">f_chdir</a> - Change current directory</li>
<li><a href="doc/chdrive.html">f_chdrive</a> - Change current drive</li>
<li><a href="doc/getcwd.html">f_getcwd</a> - Retrieve the current directory and drive</li>
</ul>
</li>
<li>Volume Management and System Configuration
<ul>
<li><a href="doc/mount.html">f_mount</a> - Register/Unregister the work area of the volume</li>
<li><a href="doc/mkfs.html">f_mkfs</a> - Create an FAT volume on the logical drive</li>
<li><a href="doc/fdisk.html">f_fdisk</a> - Create partitions on the physical drive</li>
<li><a href="doc/getfree.html">f_getfree</a> - Get free space on the volume</li>
<li><a href="doc/getlabel.html">f_getlabel</a> - Get volume label</li>
<li><a href="doc/setlabel.html">f_setlabel</a> - Set volume label</li>
<li><a href="doc/setcp.html">f_setcp</a> - Set active code page</li>
</ul>
</li>
</ul>
</div>


<div class="para">
<h3>Media Access Interface</h3>
<img src="res/layers2.png" class="rset" width="245" height="220" alt="layer">
<p>Since FatFs module is the <em>Filesystem Layer</em> independent of platforms and storage media, it is completely separated from the physical devices, such as memory card, harddisk and any type of storage device. The storage device control module is <em>not any part of FatFs module</em> and it needs to be provided by implementer. FatFs controls the storage devices via a simple media access interface shown below. Also sample implementations for some platforms are available in the downloads. A function checker for storage device control module is available <a href="res/app4.c">here</a>.</p>
<ul>
<li>Storage Device Controls
<ul>
<li><a href="doc/dstat.html">disk_status</a> - Get device status</li>
<li><a href="doc/dinit.html">disk_initialize</a> - Initialize device</li>
<li><a href="doc/dread.html">disk_read</a> - Read data</li>
<li><a href="doc/dwrite.html">disk_write</a> - Write data</li>
<li><a href="doc/dioctl.html">disk_ioctl</a> - Control device dependent functions</li>
</ul>
</li>
<li>Real Time Clock
<ul>
<li><a href="doc/fattime.html">get_fattime</a> - Get current time</li>
</ul>
</li>
</ul>
</div>


<div class="para">
<h3>Resources</h3>
<p>The FatFs module is a free software opened for education, research and development. You can use, modify and/or redistribute it for any purpose without any restriction under your responsibility. For further information, refer to the application note.</p>
<ul>
<li><em>Getting Started: <a href="doc/appnote.html">FatFs Application Node</a></em></li>
<li>Community: <a href="http://elm-chan.org/fsw/ff/bd/">FatFs User Forum</a></li>
<li><a href="https://msdn.microsoft.com/en-us/windows/hardware/gg463080.aspx">FAT32 Specification by Microsoft</a>↗ (The authorized document on FAT filesystem)</li>
<li><a href="http://elm-chan.org/docs/fat_e.html">The basics of FAT filesystem</a> (FatFs is written based on this documentation)</li>
<li><a href="http://elm-chan.org/docs/exfat_e.html">The basics of exFAT filesystem</a> (FatFs is written based on this documentation)</li>
<li><a href="http://elm-chan.org/docs/mmc/mmc_e.html">How to use MMC/SDC</a></li>
<li><a href="http://elm-chan.org/junk/fa/faff.html">Playing with FlashAir and FatFs</a></li>
<li><a href="http://nemuisan.blog.bai.ne.jp/">Nemuisan's Blog</a>↗ (Well written implementations for STM32F/SPI &amp; SDIO and LPC4088/SDMMC)</li>
<li><a href="http://stm32f4-discovery.net/2014/07/library-21-read-sd-card-fatfs-stm32f4xx-devices/">Read SD card with FatFs on STM32F4xx devices by Tilen Majerle</a>↗ (Quick and easy implementation for STM32F4-Discovery)</li>
<li><a href="res/rwtest1.png">Benchmark 1</a> (ATmega1284/20MHz with MMC via USART in SPI, CFC via GPIO)</li>
<li><a href="res/rwtest2.png">Benchmark 2</a> (LPC2368/72MHz with MMC via MCI)</li>
</div>

<hr>
<div><a href="http://elm-chan.org/fsw/ff/00index_e.html">FatFs Home Page</a></div>

</body>
</html>
70 changes: 70 additions & 0 deletions ext/fatfs/documents/css_e.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
* {margin: 0; padding: 0; border-width: 0;}
body {margin: 8px; background-color: #e0ffff; font-color: black; font-family: serif; line-height: 133%; max-width: 1024px;}
a:link {color: blue;}
a:visited {color: darkmagenta;}
a:hover {background-color: #a0ffff;}
a:active {color: darkmagenta; overflow: hidden; outline:none; position: relative; top: 1px; left: 1px;}
abbr {border-width: 1px;}

p {margin: 0 0 0.3em 1em;}
i {margin: 0 0.3em 0 0;}
b {margin: 0 0.1em;}
em {font-style: normal; font-weight: bold; margin: 0 0.1em;}
strong {}
pre {border: 1px dashed gray; margin: 0.5em 1em; padding: 0.5em; line-height: 1.2em; font-size: 85%; font-family: "Consolas", "Courier New", monospace; background-color: white;}
pre span.c {color: green;}
pre span.k {color: blue;}
pre span.e {color: red;}
pre span.b {font-weight: bold;}
pre span.arg {font-style: italic;}
tt {margin: 0 0.2em; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; }
tt.arg {font-style: italic;}
ol {margin: 0.5em 2.5em;}
ul {margin: 0.5em 2em;}
ul ul {margin: 0 2em 0.5em 1em;}
dl {margin: 0.5em 1em;}
dd {margin: 0 2em;}
dt {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace;}
dl.par dt {margin: 0.5em 0 0 0 ; font-style: italic; }
dl.ret dt {margin: 0.5em 0 0 0 ; font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; font-weight: bold; }
hr {border-width: 1px; margin: 1em;}
div.abst {font-family: sans-serif;}
div.para {clear: both; font-family: serif;}
div.ret a {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; }
.equ {text-indent: 0; margin: 1em 2em 1em;}
.indent {margin-left: 2em;}
.rset {float: right; margin: 0.3em 0 0.5em 0.5em;}
.lset {float: left; margin: 0.3em 0.5em 0.5em 0.5em;}
ul.flat li {list-style-type: none; margin: 0;}
a.imglnk img {border: 1px solid;}
.iequ {white-space: nowrap; font-weight: bold;}
.clr {clear: both;}
.it {font-style: italic;}
.mfd {font-size: 0.7em; padding: 0 1px; border: 1px solid; white-space : nowrap}
.ral {text-align: right; }
.lal {text-align: left; }
.cal {text-align: center; }

h1 {line-height: 1em; font-size: 2em; font-family: sans-serif; padding: 0.3em 0 0.3em;}
h2 {font-size: 2em; font-family: sans-serif; background-color: #d8d8FF; padding: 0.5em 0.5em; margin: 0 0 0.5em;}
h3 {font-size: 1.5em; font-family: sans-serif; margin: 1.5em 0 0.5em;}
div.doc h3 {border-color: #b0d8d8; border-style: solid; border-width: 0px 0px 4px 12px; padding: 4px; margin-top: 3em;}
h4 {font-size: 1.2em; font-family: sans-serif; margin: 2em 0 0.2em;}
h5 {font-size: 1em; font-family: sans-serif; margin: 1em 0 0em;}
p.hdd {float: right; text-align: right; margin-top: 0.5em;}
hr.hds {clear: both; margin-bottom: 1em;}
kbd {letter-spacing: 0;}
small {font-size: 80%;}
.indent {margin-left: 2em;}

/* Tables */
table {margin: 0.5em 1em; border-collapse: collapse; border: 2px solid gray; }
th {background-color: white; border-style: solid; border-width: 1px 1px 2px; border-color: gray; padding: 0 3px; vertical-align: top; white-space: nowrap;}
td {background-color: white; border: 1px solid gray; padding: 0 3px; vertical-align: top; line-height: 1.3em;}
table.lst td:first-child {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; white-space: nowrap;}
table.lst2 td {font-size: 0.85em; font-family: "Consolas", "Courier New", monospace; white-space: nowrap;}
table.lst3 td {font-family: "Consolas", "Courier New", monospace; white-space: nowrap;}
table caption {font-family: sans-serif; font-weight: bold;}
tr.lst3 td { border-width: 2px 1px 1px; }

p.foot {clear: both; text-indent: 0; margin: 1em 0.5em 1em;}
Loading