summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbernard <[email protected]>2021-09-23 10:53:53 +0000
committerGitee <[email protected]>2021-09-23 10:53:53 +0000
commit1e663b72ce2115ffb01e0a7ca931a8d9f0fd881a (patch)
treedbe50ab9fb48d158cb85d37e64bf9b43ee3419d1
parentbeff80638592d886f133f2a6d5d6aec4d78a6dce (diff)
parenta38607fcbc3767357b9bc513b129e9a26aabdca9 (diff)
!317 Perfect AT32 BSP
Merge pull request !317 from Dozingfiretruck/gitee_master
-rw-r--r--bsp/at32/Libraries/rt_drivers/drv_rtc.c121
-rw-r--r--bsp/at32/at32f403a-start/template.uvopt30
-rw-r--r--bsp/at32/at32f403a-start/template.uvoptx12
-rw-r--r--bsp/at32/at32f403a-start/template.uvproj28
-rw-r--r--bsp/at32/at32f403a-start/template.uvprojx14
-rw-r--r--bsp/at32/tools/sdk_dist.py19
6 files changed, 134 insertions, 90 deletions
diff --git a/bsp/at32/Libraries/rt_drivers/drv_rtc.c b/bsp/at32/Libraries/rt_drivers/drv_rtc.c
index d943123e88..0a6808802d 100644
--- a/bsp/at32/Libraries/rt_drivers/drv_rtc.c
+++ b/bsp/at32/Libraries/rt_drivers/drv_rtc.c
@@ -4,12 +4,14 @@
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
- * Date Author Notes
- * 2020-05-19 shelton first version
+ * Date Author Notes
+ * 2020-05-19 shelton first version
+ * 2021-08-125 Dozingfiretruck implement RTC framework V2.0
*/
#include "board.h"
#include <rtthread.h>
+#include <rtdevice.h>
#include <sys/time.h>
#ifdef BSP_USING_RTC
@@ -24,8 +26,6 @@
#define BKUP_REG_DATA 0xA5A5
-static struct rt_device rtc;
-
static time_t get_rtc_timestamp(void)
{
#ifdef SOC_SERIES_AT32F415
@@ -93,25 +93,7 @@ static rt_err_t set_rtc_time_stamp(time_t time_stamp)
return RT_EOK;
}
-static void rt_rtc_init(void)
-{
-#if defined (SOC_SERIES_AT32F415)
- RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR, ENABLE);
-#else
- RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE);
-#endif
-
-#ifdef BSP_RTC_USING_LSI
- RCC_LSICmd(ENABLE);
- while(RCC_GetFlagStatus(RCC_FLAG_LSISTBL) == RESET);
-#else
- PWR_BackupAccessCtrl(ENABLE);
- RCC_LSEConfig(RCC_LSE_ENABLE);
- while(RCC_GetFlagStatus(RCC_FLAG_LSESTBL) == RESET);
-#endif /* BSP_RTC_USING_LSI */
-}
-
-static rt_err_t rt_rtc_config(struct rt_device *dev)
+static rt_err_t rt_rtc_config(void)
{
#if defined (SOC_SERIES_AT32F415)
ERTC_InitType ERTC_InitStructure;
@@ -166,73 +148,70 @@ static rt_err_t rt_rtc_config(struct rt_device *dev)
return RT_EOK;
}
-static rt_err_t rt_rtc_control(rt_device_t dev, int cmd, void *args)
+static rt_err_t _rtc_init(void)
{
- rt_err_t result = RT_EOK;
- RT_ASSERT(dev != RT_NULL);
- switch (cmd)
+#if defined (SOC_SERIES_AT32F415)
+ RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR, ENABLE);
+#else
+ RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE);
+#endif
+
+#ifdef BSP_RTC_USING_LSI
+ RCC_LSICmd(ENABLE);
+ while(RCC_GetFlagStatus(RCC_FLAG_LSISTBL) == RESET);
+#else
+ PWR_BackupAccessCtrl(ENABLE);
+ RCC_LSEConfig(RCC_LSE_ENABLE);
+ while(RCC_GetFlagStatus(RCC_FLAG_LSESTBL) == RESET);
+#endif /* BSP_RTC_USING_LSI */
+ if (rt_rtc_config() != RT_EOK)
{
- case RT_DEVICE_CTRL_RTC_GET_TIME:
- *(rt_uint32_t *)args = get_rtc_timestamp();
- LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args);
- break;
+ LOG_E("rtc init failed.");
+ return -RT_ERROR;
+ }
- case RT_DEVICE_CTRL_RTC_SET_TIME:
- if (set_rtc_time_stamp(*(rt_uint32_t *)args))
- {
- result = -RT_ERROR;
- }
- LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args);
- break;
+ return RT_EOK;
+}
+
+static rt_err_t _rtc_get_secs(void *args)
+{
+ *(rt_uint32_t *)args = get_rtc_timestamp();
+ LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args);
+
+ return RT_EOK;
+}
+
+static rt_err_t _rtc_set_secs(void *args)
+{
+ rt_err_t result = RT_EOK;
+
+ if (set_rtc_time_stamp(*(rt_uint32_t *)args))
+ {
+ result = -RT_ERROR;
}
+ LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args);
return result;
}
-#ifdef RT_USING_DEVICE_OPS
-const static struct rt_device_ops rtc_ops =
+static const struct rt_rtc_ops _rtc_ops =
{
+ _rtc_init,
+ _rtc_get_secs,
+ _rtc_set_secs,
RT_NULL,
RT_NULL,
RT_NULL,
RT_NULL,
- RT_NULL,
- rt_rtc_control
};
-#endif
-
-static rt_err_t rt_hw_rtc_register(rt_device_t device, const char *name, rt_uint32_t flag)
-{
- RT_ASSERT(device != RT_NULL);
- rt_rtc_init();
- if (rt_rtc_config(device) != RT_EOK)
- {
- return -RT_ERROR;
- }
-#ifdef RT_USING_DEVICE_OPS
- device->ops = &rtc_ops;
-#else
- device->init = RT_NULL;
- device->open = RT_NULL;
- device->close = RT_NULL;
- device->read = RT_NULL;
- device->write = RT_NULL;
- device->control = rt_rtc_control;
-#endif
- device->type = RT_Device_Class_RTC;
- device->rx_indicate = RT_NULL;
- device->tx_complete = RT_NULL;
- device->user_data = RT_NULL;
-
- /* register a character device */
- return rt_device_register(device, name, flag);
-}
+static rt_rtc_dev_t at32_rtc_dev;
int rt_hw_rtc_init(void)
{
rt_err_t result;
- result = rt_hw_rtc_register(&rtc, "rtc", RT_DEVICE_FLAG_RDWR);
+ at32_rtc_dev.ops = &_rtc_ops;
+ result = rt_hw_rtc_register(&at32_rtc_dev, "rtc", RT_DEVICE_FLAG_RDWR,RT_NULL);
if (result != RT_EOK)
{
LOG_E("rtc register err code: %d", result);
diff --git a/bsp/at32/at32f403a-start/template.uvopt b/bsp/at32/at32f403a-start/template.uvopt
index 33eee51f0d..98f84ef5ce 100644
--- a/bsp/at32/at32f403a-start/template.uvopt
+++ b/bsp/at32/at32f403a-start/template.uvopt
@@ -10,9 +10,10 @@
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj</oExt>
<lExt>*.lib</lExt>
- <tExt>*.txt; *.h; *.inc</tExt>
+ <tExt>*.txt; *.h; *.inc; *.md</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
+ <nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
@@ -31,6 +32,7 @@
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
+ <RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
@@ -96,10 +98,12 @@
<tRtrace>0</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
- <tPdscDbg>0</tPdscDbg>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
- <nTsel>6</nTsel>
+ <bEvRecOn>1</bEvRecOn>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>3</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -110,11 +114,16 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
- <pMon>Segger\JL2CM3.dll</pMon>
+ <pMon>BIN\CMSIS_AGDI.dll</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
+ <Key>CMSIS_AGDI</Key>
+ <Name>-X"AT-Link-EZ-CMSIS-DAP" -U9BE164220040B56D0117B002 -O78 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0AT32F403A_1024 -FS08000000 -FL0100000</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
<Key>JL2CM3</Key>
<Name>-U788529815 -O78 -S0 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC800 -FN1 -FF0AT32F403A_1024 -FS08000000 -FL0100000</Name>
</SetRegEntry>
@@ -151,11 +160,22 @@
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
- <newCpu>1</newCpu>
+ <newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
+ <bLintAuto>0</bLintAuto>
+ <bAutoGenD>0</bAutoGenD>
+ <LntExFlags>0</LntExFlags>
+ <pMisraName></pMisraName>
+ <pszMrule></pszMrule>
+ <pSingCmds></pSingCmds>
+ <pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
diff --git a/bsp/at32/at32f403a-start/template.uvoptx b/bsp/at32/at32f403a-start/template.uvoptx
index 769c7372f0..88ac49dacd 100644
--- a/bsp/at32/at32f403a-start/template.uvoptx
+++ b/bsp/at32/at32f403a-start/template.uvoptx
@@ -10,7 +10,7 @@
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
- <tExt>*.txt; *.h; *.inc</tExt>
+ <tExt>*.txt; *.h; *.inc; *.md</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
@@ -101,7 +101,9 @@
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
- <nTsel>6</nTsel>
+ <bSchkAxf>0</bSchkAxf>
+ <bTchkAxf>0</bTchkAxf>
+ <nTsel>3</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@@ -112,7 +114,7 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
- <pMon>Segger\JL2CM3.dll</pMon>
+ <pMon>BIN\CMSIS_AGDI.dll</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
@@ -170,6 +172,10 @@
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
+ <pMisraNamep></pMisraNamep>
+ <pszMrulep></pszMrulep>
+ <pSingCmdsp></pSingCmdsp>
+ <pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
diff --git a/bsp/at32/at32f403a-start/template.uvproj b/bsp/at32/at32f403a-start/template.uvproj
index 7f6d829aff..eeb9d55126 100644
--- a/bsp/at32/at32f403a-start/template.uvproj
+++ b/bsp/at32/at32f403a-start/template.uvproj
@@ -10,6 +10,7 @@
<TargetName>rt-thread</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>AT32F403AVGT7</Device>
@@ -72,6 +73,8 @@
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopB1X>0</nStopB1X>
+ <nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
<RunUserProg1>1</RunUserProg1>
@@ -80,6 +83,8 @@
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ <nStopA1X>0</nStopA1X>
+ <nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString>
@@ -141,10 +146,9 @@
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>0</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
- <UsePdscDebugDescription>0</UsePdscDebugDescription>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
- <TargetSelection>6</TargetSelection>
+ <TargetSelection>3</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
@@ -158,7 +162,7 @@
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
- <Driver>Segger\JL2CM3.dll</Driver>
+ <Driver>BIN\CMSIS_AGDI.dll</Driver>
</TargetDlls>
</DebugOption>
<Utilities>
@@ -168,11 +172,11 @@
<RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
<Capability>1</Capability>
- <DriverSelection>4096</DriverSelection>
+ <DriverSelection>4099</DriverSelection>
</Flash1>
<bUseTDR>1</bUseTDR>
- <Flash2>BIN\UL2CM3.DLL</Flash2>
- <Flash3></Flash3>
+ <Flash2>BIN\CMSIS_AGDI.dll</Flash2>
+ <Flash3>"" ()</Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
@@ -218,12 +222,15 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>2</RvdsVP>
+ <RvdsMve>0</RvdsMve>
+ <RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
<useUlib>0</useUlib>
<EndSel>0</EndSel>
<uLtcg>0</uLtcg>
+ <nSecure>0</nSecure>
<RoSelD>3</RoSelD>
<RwSelD>3</RwSelD>
<CodeSel>0</CodeSel>
@@ -357,7 +364,15 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
+ <v6Lang>1</v6Lang>
+ <v6LangP>1</v6LangP>
+ <vShortEn>1</vShortEn>
+ <vShortWch>1</vShortWch>
+ <v6Lto>0</v6Lto>
+ <v6WtE>0</v6WtE>
+ <v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
@@ -375,6 +390,7 @@
<NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc>
<useXO>0</useXO>
+ <ClangAsOpt>1</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
diff --git a/bsp/at32/at32f403a-start/template.uvprojx b/bsp/at32/at32f403a-start/template.uvprojx
index 9f3a44663d..3809082825 100644
--- a/bsp/at32/at32f403a-start/template.uvprojx
+++ b/bsp/at32/at32f403a-start/template.uvprojx
@@ -11,11 +11,12 @@
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+ <uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>AT32F403AVGT7</Device>
<Vendor>ArteryTek</Vendor>
- <PackID>Keil.AT32F4xx_DFP.1.3.1</PackID>
+ <PackID>Keil.AT32F4xx_DFP.1.3.2</PackID>
<Cpu>IRAM(0x20000000,0x38000) IROM(0x08000000,0x100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile>
@@ -132,11 +133,11 @@
<RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
<Capability>1</Capability>
- <DriverSelection>4096</DriverSelection>
+ <DriverSelection>4099</DriverSelection>
</Flash1>
<bUseTDR>1</bUseTDR>
- <Flash2>BIN\UL2CM3.DLL</Flash2>
- <Flash3></Flash3>
+ <Flash2>BIN\CMSIS_AGDI.dll</Flash2>
+ <Flash3>"" ()</Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
@@ -182,6 +183,8 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>2</RvdsVP>
+ <RvdsMve>0</RvdsMve>
+ <RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@@ -322,6 +325,7 @@
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
+ <uGnu>0</uGnu>
<useXO>0</useXO>
<v6Lang>1</v6Lang>
<v6LangP>1</v6LangP>
@@ -347,7 +351,7 @@
<NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc>
<useXO>0</useXO>
- <uClangAs>0</uClangAs>
+ <ClangAsOpt>4</ClangAsOpt>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
diff --git a/bsp/at32/tools/sdk_dist.py b/bsp/at32/tools/sdk_dist.py
index 4c36c9b6e3..e3db1e519a 100644
--- a/bsp/at32/tools/sdk_dist.py
+++ b/bsp/at32/tools/sdk_dist.py
@@ -4,6 +4,24 @@ import shutil
cwd_path = os.getcwd()
sys.path.append(os.path.join(os.path.dirname(cwd_path), 'rt-thread', 'tools'))
+def bsp_update_kconfig_library(dist_dir):
+ # change RTT_ROOT in Kconfig
+ if not os.path.isfile(os.path.join(dist_dir, 'Kconfig')):
+ return
+
+ with open(os.path.join(dist_dir, 'Kconfig'), 'r') as f:
+ data = f.readlines()
+ with open(os.path.join(dist_dir, 'Kconfig'), 'w') as f:
+ found = 0
+ for line in data:
+ if line.find('RTT_ROOT') != -1:
+ found = 1
+ if line.find('../Libraries') != -1 and found:
+ position = line.find('../Libraries')
+ line = line[0:position] + 'Libraries/Kconfig"\n'
+ found = 0
+ f.write(line)
+
# BSP dist function
def dist_do_building(BSP_ROOT, dist_dir):
from mkdist import bsp_copy_files
@@ -18,3 +36,4 @@ def dist_do_building(BSP_ROOT, dist_dir):
print("=> copy bsp drivers")
bsp_copy_files(os.path.join(library_path, 'rt_drivers'), os.path.join(library_dir, 'rt_drivers'))
shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig'))
+ bsp_update_kconfig_library(dist_dir) \ No newline at end of file