diff options
| author | bernard <[email protected]> | 2021-09-23 10:53:53 +0000 |
|---|---|---|
| committer | Gitee <[email protected]> | 2021-09-23 10:53:53 +0000 |
| commit | 1e663b72ce2115ffb01e0a7ca931a8d9f0fd881a (patch) | |
| tree | dbe50ab9fb48d158cb85d37e64bf9b43ee3419d1 /bsp | |
| parent | beff80638592d886f133f2a6d5d6aec4d78a6dce (diff) | |
| parent | a38607fcbc3767357b9bc513b129e9a26aabdca9 (diff) | |
!317 Perfect AT32 BSP
Merge pull request !317 from Dozingfiretruck/gitee_master
Diffstat (limited to 'bsp')
| -rw-r--r-- | bsp/at32/Libraries/rt_drivers/drv_rtc.c | 121 | ||||
| -rw-r--r-- | bsp/at32/at32f403a-start/template.uvopt | 30 | ||||
| -rw-r--r-- | bsp/at32/at32f403a-start/template.uvoptx | 12 | ||||
| -rw-r--r-- | bsp/at32/at32f403a-start/template.uvproj | 28 | ||||
| -rw-r--r-- | bsp/at32/at32f403a-start/template.uvprojx | 14 | ||||
| -rw-r--r-- | bsp/at32/tools/sdk_dist.py | 19 |
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 |
