diff --git a/.vs/SAM-BA_MONITOR_ROMLESS/v14/.atsuo b/.vs/SAM-BA_MONITOR_ROMLESS/v14/.atsuo new file mode 100644 index 0000000..22ba6e8 Binary files /dev/null and b/.vs/SAM-BA_MONITOR_ROMLESS/v14/.atsuo differ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0beb11a..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 kimstik - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/SAM-BA_MONITOR_ROMLESS.atsln b/SAM-BA_MONITOR_ROMLESS.atsln new file mode 100644 index 0000000..9dde577 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS.atsln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "SAM-BA_MONITOR_ROMLESS", "SAM-BA_MONITOR_ROMLESS\SAM-BA_MONITOR_ROMLESS.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Release|ARM = Release|ARM + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|ARM.ActiveCfg = Debug|ARM + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|ARM.Build.0 = Debug|ARM + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|ARM.ActiveCfg = Release|ARM + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|ARM.Build.0 = Release|ARM + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/startup_saml22.d b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/startup_saml22.d new file mode 100644 index 0000000..8d9456a --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/startup_saml22.d @@ -0,0 +1,242 @@ +Device_Startup/startup_saml22.d Device_Startup/startup_saml22.o: \ + ../Device_Startup/startup_saml22.c \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/startup_saml22.o b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/startup_saml22.o new file mode 100644 index 0000000..e0a9837 Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/startup_saml22.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/system_saml22.d b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/system_saml22.d new file mode 100644 index 0000000..5d30c3d --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/system_saml22.d @@ -0,0 +1,242 @@ +Device_Startup/system_saml22.d Device_Startup/system_saml22.o: \ + ../Device_Startup/system_saml22.c \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/system_saml22.o b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/system_saml22.o new file mode 100644 index 0000000..4a5e7f4 Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/Device_Startup/system_saml22.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/Makefile b/SAM-BA_MONITOR_ROMLESS/Debug/Makefile new file mode 100644 index 0000000..de72619 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/Makefile @@ -0,0 +1,206 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +SHELL := cmd.exe +RM := rm -rf + +USER_OBJS := + +LIBS := +PROJ := + +O_SRCS := +C_SRCS := +S_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +PREPROCESSING_SRCS := +OBJS := +OBJS_AS_ARGS := +C_DEPS := +C_DEPS_AS_ARGS := +EXECUTABLES := +OUTPUT_FILE_PATH := +OUTPUT_FILE_PATH_AS_ARGS := +AVR_APP_PATH :=$$$AVR_APP_PATH$$$ +QUOTE := " +ADDITIONAL_DEPENDENCIES:= +OUTPUT_FILE_DEP:= +LIB_DEP:= +LINKER_SCRIPT_DEP:= + +# Every subdirectory with source files must be described here +SUBDIRS := \ +../device_config/ \ +../Device_Startup/ \ +../drivers/ \ +../sam_ba/ + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Device_Startup/startup_saml22.c \ +../Device_Startup/system_saml22.c \ +../drivers/cdc_enumerate.c \ +../drivers/uart_driver.c \ +../main.c \ +../sam_ba/sam_ba_monitor.c \ +../sam_ba/usart_sam_ba.c \ +../sam_ba/usb_sam_ba.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +Device_Startup/startup_saml22.o \ +Device_Startup/system_saml22.o \ +drivers/cdc_enumerate.o \ +drivers/uart_driver.o \ +main.o \ +sam_ba/sam_ba_monitor.o \ +sam_ba/usart_sam_ba.o \ +sam_ba/usb_sam_ba.o + +OBJS_AS_ARGS += \ +Device_Startup/startup_saml22.o \ +Device_Startup/system_saml22.o \ +drivers/cdc_enumerate.o \ +drivers/uart_driver.o \ +main.o \ +sam_ba/sam_ba_monitor.o \ +sam_ba/usart_sam_ba.o \ +sam_ba/usb_sam_ba.o + +C_DEPS += \ +Device_Startup/startup_saml22.d \ +Device_Startup/system_saml22.d \ +drivers/cdc_enumerate.d \ +drivers/uart_driver.d \ +main.d \ +sam_ba/sam_ba_monitor.d \ +sam_ba/usart_sam_ba.d \ +sam_ba/usb_sam_ba.d + +C_DEPS_AS_ARGS += \ +Device_Startup/startup_saml22.d \ +Device_Startup/system_saml22.d \ +drivers/cdc_enumerate.d \ +drivers/uart_driver.d \ +main.d \ +sam_ba/sam_ba_monitor.d \ +sam_ba/usart_sam_ba.d \ +sam_ba/usb_sam_ba.d + +OUTPUT_FILE_PATH +=SAM-BA_MONITOR_ROMLESS.elf + +OUTPUT_FILE_PATH_AS_ARGS +=SAM-BA_MONITOR_ROMLESS.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= \ +../Device_Startup/saml22n18a_flash.ld \ +../Device_Startup/saml22n18a_sram.ld + + +# AVR32/GNU C Compiler + + + + + + + + + + + + + + + + + +Device_Startup/%.o: ../Device_Startup/%.c + @echo Building file: $< + @echo Invoking: ARM/GNU C Compiler : 6.2.1 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -x c -mthumb -D__SAML22N18A__ -DDEBUG -I"../device_config" -I"../drivers" -I"../sam_ba" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include" -Og -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +drivers/%.o: ../drivers/%.c + @echo Building file: $< + @echo Invoking: ARM/GNU C Compiler : 6.2.1 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -x c -mthumb -D__SAML22N18A__ -DDEBUG -I"../device_config" -I"../drivers" -I"../sam_ba" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include" -Og -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./%.o: .././%.c + @echo Building file: $< + @echo Invoking: ARM/GNU C Compiler : 6.2.1 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -x c -mthumb -D__SAML22N18A__ -DDEBUG -I"../device_config" -I"../drivers" -I"../sam_ba" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include" -Og -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +sam_ba/%.o: ../sam_ba/%.c + @echo Building file: $< + @echo Invoking: ARM/GNU C Compiler : 6.2.1 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -x c -mthumb -D__SAML22N18A__ -DDEBUG -I"../device_config" -I"../drivers" -I"../sam_ba" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include" -Og -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m0plus -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + + +# AVR32/GNU Preprocessing Assembler + + + +# AVR32/GNU Assembler + + + + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) + +$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) + @echo Building target: $@ + @echo Invoking: ARM/GNU Linker : 6.2.1 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -mthumb -Wl,-Map="SAM-BA_MONITOR_ROMLESS.map" --specs=nano.specs -Wl,--start-group -lm -Wl,--end-group -L"..\\Device_Startup" -Wl,--gc-sections -mcpu=cortex-m0plus -Wl,--defsym,STACK_SIZE=0x280 -Tsaml22n18a_flash.ld + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -O binary "SAM-BA_MONITOR_ROMLESS.elf" "SAM-BA_MONITOR_ROMLESS.bin" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "SAM-BA_MONITOR_ROMLESS.elf" "SAM-BA_MONITOR_ROMLESS.hex" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O binary "SAM-BA_MONITOR_ROMLESS.elf" "SAM-BA_MONITOR_ROMLESS.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objdump.exe" -h -S "SAM-BA_MONITOR_ROMLESS.elf" > "SAM-BA_MONITOR_ROMLESS.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "SAM-BA_MONITOR_ROMLESS.elf" "SAM-BA_MONITOR_ROMLESS.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-size.exe" "SAM-BA_MONITOR_ROMLESS.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "SAM-BA_MONITOR_ROMLESS.elf" "SAM-BA_MONITOR_ROMLESS.a" "SAM-BA_MONITOR_ROMLESS.hex" "SAM-BA_MONITOR_ROMLESS.bin" "SAM-BA_MONITOR_ROMLESS.lss" "SAM-BA_MONITOR_ROMLESS.eep" "SAM-BA_MONITOR_ROMLESS.map" "SAM-BA_MONITOR_ROMLESS.srec" + \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.bin b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.bin new file mode 100644 index 0000000..8e86a1e Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.bin differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.eep b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.eep new file mode 100644 index 0000000..e69de29 diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.elf b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.elf new file mode 100644 index 0000000..423643a Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.elf differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.hex b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.hex new file mode 100644 index 0000000..03dbd32 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.hex @@ -0,0 +1,317 @@ +:10000000900400200D01000009010000090100001A +:1000100000000000000000000000000000000000E0 +:1000200000000000000000000000000009010000C6 +:1000300000000000000000000901000009010000AC +:100040000901000009010000090100000901000088 +:100050000901000009010000090100000901000078 +:100060000901000009010000090100000901000068 +:100070000901000009010000090100000901000058 +:100080000901000009010000090100000901000048 +:100090000901000009010000090100000901000038 +:1000A000090100000901000010B5064C2378002B5F +:1000B00007D1054B002B02D0044800E000BF01230C +:1000C000237010BD4C0000200000000070130000E1 +:1000D000084B10B5002B03D00749084800E000BFCB +:1000E00007480368002B00D110BD064B002BFBD046 +:1000F0009847F9E70000000050000020701300004E +:100100007013000000000000FEE7000010B5104A68 +:10011000104B9A4209D00F4B0D4A03E01168196049 +:10012000043304320C498B42F8D30C4B02E000221A +:100130001A6004330A4A9342F9D30A4AFF210A4B50 +:100140008B439360094B9847094B9847FEE7C0469D +:1001500070130000000000204C0000204C00002024 +:100160000C02002000ED00E0000000008112000001 +:10017000390A000030B504681E4B1B78002B14D1DF +:100180001D4B1E481864586C800B85035D645D6CC4 +:100190001B4828405864A2204000235C40252B4384 +:1001A00023544438FF38134B18704823FF33E35C63 +:1001B000DB071DD5104B5B6C9B049B0C934203D259 +:1001C0000D4B5A6C9204920C002303E00B48C05C68 +:1001D000C85401339342F9D34821FF31635C0120B5 +:1001E0000343DBB263540021024B1970100030BD91 +:1001F0000020FCE7680000206C010020AC0000201B +:10020000FF3F00F0F0B505681800441EA041C0B2E1 +:100210001E005F01224CE419103464686400640F0E +:1002200003340127A74097422ED80F0058011C49DC +:1002300009184C698020000620434861580118497C +:1002400009180C000F6148699104890C800B800328 +:1002500001436161606913490140616108335B01D9 +:10026000EB18D97902200143C9B2D971587980219C +:10027000494201435971330008335B01EB18DB79C4 +:100280009B07F8D51000F0BD8001074FC719002467 +:1002900002E0085D385501349442FAD3CEE7C046F7 +:1002A0006C010020FF3F00F0EC00002010B500239F +:1002B000014CA04710BDC04605020000324A9369B8 +:1002C00001210B439361314B314A9A623149996262 +:1002D0009A62314A9A628222D205137801210B4335 +:1002E00013708223DB059B78DB07FAD42B4B1A684B +:1002F000520B1F2313401F2B38D08221C9050A8DB2 +:100300009B012748024013430B85244B1A68920C2B +:100310001F231A401F2A2BD08221C9050B8D1F20B5 +:10032000834313430B851D4B1A68D20D07231340DB +:10033000072B1FD08222D205118D1B0319480140C3 +:100340000B43138511787F230B401370137804211E +:100350000B431370144B536211890C20814311819C +:1003600011890B3881431181002209E01A3BC4E74F +:10037000023AD1E7043BDDE7002119700132013375 +:100380007F2AF9D97047C04600080040006000414C +:1003900000000356000103D6000203D61860800057 +:1003A0003FF8FFFFFF8FFFFF6C010020016000237B +:1003B00003714371054B8360054BC360054B0361BB +:1003C0000B78022213430B707047C04609080000E7 +:1003D000050200007501000030B50468164B1B785B +:1003E000002B08D04620FF30235C40252B432354AC +:1003F0000020114B187011480164436C9B0B99034A +:100400004164416C93041B090D4D29400B43436427 +:10041000A2214900635C4020034363544823FF3317 +:10042000E35CDB07FAD54821FF31635C012003431D +:10043000DBB26354100030BD680000206C01002066 +:10044000FF3F00F00C4A53699B0B9903516108224E +:10045000FF32835C02210B43DBB283540622FF325E +:10046000815C80235B420B4383540823FF33C35CCE +:100470009B07FAD57047C0466C010020002904D1C3 +:1004800010220623FF33C254704720220623FF3375 +:10049000C254F9E7F0B5D6464F464646C0B582B0DD +:1004A00004680822FF32A35C10210B43DBB2A35483 +:1004B000C5490E784B788D78CA78120215432DB253 +:1004C000AAB294460F794A79120217433FB2BAB2E0 +:1004D00090468A799146CA79120249460A43924661 +:1004E00040218946C4314A4662541B023343B7490E +:1004F0008B4200D1FFE016DD882109018B4200D13B +:10050000BAE034DDB2498B4200D150E153DDB1494C +:100510008B4200D14FE1B04A934213D14571200084 +:10052000AE4B9847A2E080225200934200D1F1E006 +:100530000DDC812B00D1ACE0822B00D1B1E0802B0F +:1005400000D19EE001212000A54B98478EE081223A +:100550005200934200D1E6E000DAE0E0FF32FF32E1 +:100560009342EFD1012120009D4B98477EE0A021CE +:10057000C9008B4272D08131FF318B424DD0994AF4 +:100580009342DFD10F23424613406246002A00D037 +:10059000BBE0002B00D1B8E0032B00D9B5E03A0650 +:1005A00000D5ACE008335B01E31810225A7120003B +:1005B0008A4B98475AE0902212019342C2D10571AA +:1005C0002000864B98470322A0235B00E254864B11 +:1005D000586C864A1040C02189050843586440255C +:1005E0004620FF3025548248186430269020400071 +:1005F0002654586B104001435963802192204000DB +:1006000021547C481863B02040002554586F0240A4 +:100610005A67B2235B00E15428E080235B009C45CD +:100620000BD080239B009C4513D15346432B0ED8FF +:1006300052467149714B984718E05346122B04D823 +:1006400052466F496D4B984710E01222F9E743225A +:10065000EFE701212000624B984707E020005F4B45 +:100660009847802252422A43D2B2A27202B01CBCE6 +:1006700090469946A246F0BD011D01225F4B984766 +:10068000F4E76B46991D00230B8002225B4B9847D1 +:10069000ECE76B46991D00230B800222574B9847CD +:1006A000E4E700226B46DA8050323A400F2341469D +:1006B0000B40032B1AD8002A0ED008335B01E41834 +:1006C000A2795209012313406A46D38002226B4665 +:1006D000991D4A4B9847C9E708335B01E418A27992 +:1006E0001209012313406A46D380EFE7012120005D +:1006F0003B4B9847BAE72000384B9847B6E708339A +:100700005B01E31820225A7151E701212000344B8C +:100710009847ABE701212000314B9847A6E720001E +:100720002E4B9847A2E70F23424613406246002A09 +:1007300038D1002B36D0032B34D83A061AD41A00FD +:1007400008325201A2189279D2060FD51A00083247 +:100750005201A21810211171D279920606D50833E0 +:100760005B01E3182022DA711F3A1A7120001B4B3B +:1007700098477BE71A0008325201A2189279920634 +:10078000F4D51A0008325201A21820211171D27931 +:100790005206EBD508335B01E3184022DA713E3A8A +:1007A0001A71E3E7012120000D4B98475EE7200016 +:1007B0000A4B98475AE75346082B23D852460E490E +:1007C00044310E4B984751E76C00002001030000B4 +:1007D00021200000A121000021220000450400008A +:1007E0007D040000020300006C010020FFFFFF8F6A +:1007F000AC0000202C01002000000020AD02000011 +:10080000C81200000822DAE7F8B5040003689A8BE2 +:10081000120707D40822FF329B5CDB0635D51C4B40 +:10082000984732E09A8B08210A4392B29A83802239 +:100830009A72112080214900585440260621FF3128 +:100840005E5482256D005A55124A576812498C46EB +:100850000F40C02189053800084350605069674641 +:100860003840014351610D4911600D4911615068D3 +:100870000C49084080218902014351605168890B6D +:10088000880350605E55002323712079F8BDC0466F +:10089000950400006C010020FFFFFF8F6C0000201A +:1008A000EC000020FF3F00F010B5C3699B07FCD4AB +:1008B000046802239C430460C369DB07FCD404681A +:1008C000012323430360C369DB07FCD4C369DB074F +:1008D000FCD4C3699B07F9D4084B1A430260C3696F +:1008E0005B07FCD4C0239B0243608181C3699B07E3 +:1008F000FCD4026802231343036010BD840000404F +:1009000010B586B01F4A94235B001F49D1501F4881 +:10091000D050D1501E49D1501E486B46020013CA18 +:1009200013C313CA13C30023052B09D89A006946C1 +:100930005158194A914201D00133F5E7DBB200E08A +:1009400000231648C2695C1C0121A1400A43C26110 +:1009500019001031124A30339B00002098509858EB +:100960004024204398500B0020339B000C4A9B5896 +:100970005B06F8D5C42292030A4907480A4B9847F8 +:1009800006B010BD0060004100000353000103D316 +:10099000000203D3DC1200000014004200080040F3 +:1009A000001C004004C50000A9080000C369002B1A +:1009B000FCD189B20185037E9B07FCD57047C369D2 +:1009C000002BFCD1438BDBB2002B03D0438B0722DF +:1009D00093434383008DC0B270470000024B1B7EDF +:1009E0009B080120184070470014004210B582B0E7 +:1009F0000E4B1868431C17D00D4A0223536006247F +:100A0000412154549361116A19400191126A1340B3 +:100A10000193019B002B07D080239B011A6882F36E +:100A20000888044A9360004702B010BD042000000B +:100A30000061004100ED00E010B5104B98471049EF +:100A40004B681E2293431C3A13434B600D490B7DA8 +:100A50000C208343042003430B750B4B0121997138 +:100A60009A70094B9B79002BFBD0BFF35F8F62B666 +:100A7000064B9847064B9847FCE7C046ED09000037 +:100A8000004000410010004000040040AD0A00009A +:100A9000210E000010B5034B1B68DB6802210248E1 +:100AA000984710BD000200204813000010B5284BE5 +:100AB0009847284A284B9A82274BDB68DB07FBD5EF +:100AC00082225200254B5A62244B5B685B07FBD4A1 +:100AD00041218023214AD1508023204AD3585B06EC +:100AE000FAD51F4B1A68920E3F2A2FD01D490B8B47 +:100AF000802083430B831B4BDB68DB05FBD5194947 +:100B0000194B0B62920280239B001A43CA61154B5A +:100B1000DB68DB05FBD50622124B1A83114BDB6821 +:100B2000DB05FBD5832252000C4BDA620B4B5B6872 +:100B30000C221A42FAD143219823084AD150074B7C +:100B40005B685B07FBD4094B984710BD203ACDE7A3 +:100B5000010900004E04000000140040001C004089 +:100B60002060800000100040B8051F0C7D110000BF +:100B700070B584B01E4B1B78002B33D004290AD0EB +:100B800002290AD004784D006A1E06236B449C4655 +:100B90006244002008E00468F5E70488F3E737338F +:100BA00013702409013A0130A84207D20F232340D1 +:100BB000092BF4D8302633431370F2E701A8302311 +:100BC0000370483343704B1C5B000A22C254033548 +:100BD0000D234355074B1B68DB68023149009847DA +:100BE00004B070BD034B1B68DB689847F8E7C0464C +:100BF000690000200002002072B6BFF35F8FEFF3A0 +:100C00000883064A1360036883F30888FF23020001 +:100C10009A43034B9A6043681847704704020020C8 +:100C200000ED00E0F0B5C64600B592B000267A238C +:100C30009846734B1B681B69402101A89847070021 +:100C4000002501AC54E06F4B1B78002B2CD14346A0 +:100C5000532B2CD04346522B63D043464F2B67D0A7 +:100C60004346482B6AD04346572B6DD043466F2BE3 +:100C70006DD04346682B6FD04346772B73D04346E5 +:100C8000472B77D04346542B00D17EE043464E2B72 +:100C900000D180E04346562B20D1594B1B68DB68BE +:100CA0001B215948984719E0584B9847CFE7013422 +:100CB0000135119A781B904200D91000002105E0FF +:100CC0002278327001360134013501318142F7D387 +:100CD000013D013C119B99421CD3C0460023119356 +:100CE000484B1B78002B61D17A239846013401359B +:100CF000BD429ED22378FF2BF9D0232BA3D01A001C +:100D0000303AD2B2092A5AD8119A1201303B134311 +:100D10001193EBE73A4A12689269591A30009047EA +:100D2000DBE7374B1B685B69119930009847D5E7C3 +:100D30006B4644229B181B783370CFE76B464422E6 +:100D40009B181B883380C9E7119B3360C6E70121DC +:100D500030002F4B9847C1E733881193022111A827 +:100D60002B4B9847BAE733681193042111A8284BFD +:100D70009847B3E71198274B9847274B1B6883F395 +:100D80000888BFF35F8F62B6A8E701221D4B1A7077 +:100D90001E4B9847A2E71B4B1B78002B03D0002269 +:100DA000184B1A709AE7194B9847F8E7144B1B68D1 +:100DB000DB680121194898477A23984696E71A007C +:100DC000413AD2B2052A05D8119A1201373B134392 +:100DD00011938BE71A00613AD2B2052A05D8119A0D +:100DE0001201573B1343119380E72C2B03D09846F5 +:100DF000002311937AE7119E0023119376E7C046F2 +:100E00000002002069000020F4120000950A000092 +:100E1000710B0000F90B0000040200204C130000CD +:100E200010B50D4883689847002804D10B4B9847AC +:100E3000002806D110BD0A4B1C330A4A13600A4B26 +:100E400098470A4B98472328F4D1054B3833054A75 +:100E50001360054B9847C046EC010020DD090000F7 +:100E6000F412000000020020250C0000890E000092 +:100E700010B5C1B20248034B9847012010BDC046CF +:100E800000140042AD09000010B5044B984700283B +:100E9000FBD00348034B984710BDC046DD09000056 +:100EA00000140042BF09000070B50E0005000024C8 +:100EB00004E02878034B984701350134B442F8D355 +:100EC000200070BD710E000010B50400024B984761 +:100ED0002070012010BDC046890E0000000248406D +:100EE000002305E040000749484080B201339BB22F +:100EF000072B05D802B2002AF4DB400080B2F5E7E8 +:100F00007047C04621100000F0B583B007000E0006 +:100F100000240023019306E07B1C3D70802E15D039 +:100F20001F000134A4B2B44216D20D4B9847C5B28B +:100F3000019928000B4B984701900B4B1B88002B05 +:100F4000EAD10A4B1B78002BEBD0E5E706490A886B +:100F5000013A0A801F00E4E7019803B0F0BDC046E3 +:100F6000890E0000DD0E0000080200200A020020A9 +:100F7000F8B507000C000120154DA8472000A84730 +:100F8000E043C0B2A847002400260DE03D78013BB5 +:100F9000104A1380013728000D4B98472100280084 +:100FA0000D4B9847040001367F2E08D8094B1B884B +:100FB000002BEBD1094A1578002DECD0E6E7200A8A +:100FC000C0B2034DA847E0B2A847054B9847F8BD0B +:100FD000710E000008020020DD0E00000A02002051 +:100FE000890E0000F0B583B006000D00022101A8B3 +:100FF000124CA04780213000A0470600104FB84790 +:1010000080B2000284B2B84780B22418A4B2A642CB +:1010100003D101AB1B78AB4205D01820094B984790 +:10102000002003B0F0BD01AB5B78ED43EDB2AB4205 +:10103000F3D10620034B98470120F2E7090F000087 +:10104000890E0000710E000070B505000E1E09D15A +:1010500001221C4B1A70730602D080367F239E43F8 +:10106000002406E0184B19800022164B1A70F2E794 +:101070000124002C10D1154B9847FF23184043281A +:10108000F6D071281BD01528F3D1F1E70134E4B272 +:10109000803E8035002E08D0210028000C4B984758 +:1010A000FF2318400628F1D0F4E70420094B9847A5 +:1010B000064B98470022034B1A70012000E00020E5 +:1010C00070BDC0460A02002008020020890E000000 +:1010D000710F0000710E000070B50500002904D1E9 +:1010E00001221F4B1A70642611E01E4B198000224A +:1010F0001B4B1A70F7E7013C1B4B9847002801D1A6 +:10110000002CF8D1002C22D1013E002E25D0432006 +:10111000164B9847164CEFE721002800154B9847CF +:10112000020001280FD0002A14D0134B9847002248 +:10113000FF2318400128EFD00428F4D106200B4BE0 +:1011400098470022EFE70134E4B28035EBE7012451 +:101150000122E8E7024B1A700126300070BDC0463C +:101160000A02002008020020DD090000710E0000C4 +:1011700000350C00E50F0000890E000010B5054C8D +:101180008223DB052360044B984721682000034B32 +:10119000984710BDEC010020BD020000AD03000027 +:1011A00010B582B001900123012201A90248034C2D +:1011B000A047012002B010BDEC0100200502000094 +:1011C00010B582B06B46DC1D012221000248034BA2 +:1011D0009847207802B010BDEC0100207501000096 +:1011E00010B50848084B9847002808D0054B1A68E6 +:1011F0004823FF33D05C473BFF3B184010BD002025 +:10120000FCE7C046EC0100200908000070B50C00A6 +:1012100001230A0001000248024DA847200070BDCA +:10122000EC0100200502000070B504000D00064826 +:10123000064B9847002801D1002070BD2A002100EC +:101240000148034B9847F8E7EC010020090800002B +:101250007501000070B504000D000648064B984764 +:10126000002801D1002070BD2A0021000148034B55 +:101270009847F8E7EC01002009080000D9030000B6 +:1012800070B500260C4D0D4C641BA410A64209D16C +:10129000002600F05DF80A4D0A4C641BA410A6421B +:1012A00005D170BDB300EB5898470136EEE7B300A7 +:1012B000EB5898470136F2E75C1300005C1300001E +:1012C0005C130000601300001201100102000040D6 +:1012D000EB03246110010000000100000004004243 +:1012E00000080042000C00420010004200140042BE +:1012F0000018004276322E3138446563203139209F +:10130000323031372031353A32383A34330A0D0031 +:10131000A1110000C1110000E11100000D12000038 +:10132000291200000D12000055120000710E00007D +:10133000890E0000DD090000A90E0000C90E0000A2 +:1013400049100000D91000000A0D00003E00000006 +:10135000F8B5C046F8BC08BC9E467047D1000000F6 +:10136000F8B5C046F8BC08BC9E467047A90000000E +:1013700009024300020100C000090400000102024A +:1013800000000524001001042402000524060001C9 +:101390000524010001070583030800FF090401007B +:1013A000020A000000070581024000000705020252 +:0C13B0004000000000C201000000080026 +:00000001FF diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.lss b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.lss new file mode 100644 index 0000000..f964fbf --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.lss @@ -0,0 +1,3485 @@ + +SAM-BA_MONITOR_ROMLESS.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00001370 00000000 00000000 00010000 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .relocate 0000004c 20000000 00001370 00020000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 2 .bss 000001c0 2000004c 000013bc 0002004c 2**2 + ALLOC + 3 .stack 00000284 2000020c 0000157c 0002004c 2**0 + ALLOC + 4 .ARM.attributes 00000028 00000000 00000000 0002004c 2**0 + CONTENTS, READONLY + 5 .comment 00000059 00000000 00000000 00020074 2**0 + CONTENTS, READONLY + 6 .debug_info 0001202a 00000000 00000000 000200cd 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00001680 00000000 00000000 000320f7 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_loc 0000206d 00000000 00000000 00033777 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_aranges 00000220 00000000 00000000 000357e4 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_ranges 00000210 00000000 00000000 00035a04 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_macro 00016dca 00000000 00000000 00035c14 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_line 00003e66 00000000 00000000 0004c9de 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_str 00089062 00000000 00000000 00050844 2**0 + CONTENTS, READONLY, DEBUGGING + 14 .debug_frame 00000530 00000000 00000000 000d98a8 2**2 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 : + 0: 90 04 00 20 0d 01 00 00 09 01 00 00 09 01 00 00 ... ............ + ... + 2c: 09 01 00 00 00 00 00 00 00 00 00 00 09 01 00 00 ................ + 3c: 09 01 00 00 09 01 00 00 09 01 00 00 09 01 00 00 ................ + 4c: 09 01 00 00 09 01 00 00 09 01 00 00 09 01 00 00 ................ + 5c: 09 01 00 00 09 01 00 00 09 01 00 00 09 01 00 00 ................ + 6c: 09 01 00 00 09 01 00 00 09 01 00 00 09 01 00 00 ................ + 7c: 09 01 00 00 09 01 00 00 09 01 00 00 09 01 00 00 ................ + 8c: 09 01 00 00 09 01 00 00 09 01 00 00 09 01 00 00 ................ + 9c: 09 01 00 00 09 01 00 00 09 01 00 00 ............ + +000000a8 <__do_global_dtors_aux>: + a8: b510 push {r4, lr} + aa: 4c06 ldr r4, [pc, #24] ; (c4 <__do_global_dtors_aux+0x1c>) + ac: 7823 ldrb r3, [r4, #0] + ae: 2b00 cmp r3, #0 + b0: d107 bne.n c2 <__do_global_dtors_aux+0x1a> + b2: 4b05 ldr r3, [pc, #20] ; (c8 <__do_global_dtors_aux+0x20>) + b4: 2b00 cmp r3, #0 + b6: d002 beq.n be <__do_global_dtors_aux+0x16> + b8: 4804 ldr r0, [pc, #16] ; (cc <__do_global_dtors_aux+0x24>) + ba: e000 b.n be <__do_global_dtors_aux+0x16> + bc: bf00 nop + be: 2301 movs r3, #1 + c0: 7023 strb r3, [r4, #0] + c2: bd10 pop {r4, pc} + c4: 2000004c .word 0x2000004c + c8: 00000000 .word 0x00000000 + cc: 00001370 .word 0x00001370 + +000000d0 : + d0: 4b08 ldr r3, [pc, #32] ; (f4 ) + d2: b510 push {r4, lr} + d4: 2b00 cmp r3, #0 + d6: d003 beq.n e0 + d8: 4907 ldr r1, [pc, #28] ; (f8 ) + da: 4808 ldr r0, [pc, #32] ; (fc ) + dc: e000 b.n e0 + de: bf00 nop + e0: 4807 ldr r0, [pc, #28] ; (100 ) + e2: 6803 ldr r3, [r0, #0] + e4: 2b00 cmp r3, #0 + e6: d100 bne.n ea + e8: bd10 pop {r4, pc} + ea: 4b06 ldr r3, [pc, #24] ; (104 ) + ec: 2b00 cmp r3, #0 + ee: d0fb beq.n e8 + f0: 4798 blx r3 + f2: e7f9 b.n e8 + f4: 00000000 .word 0x00000000 + f8: 20000050 .word 0x20000050 + fc: 00001370 .word 0x00001370 + 100: 00001370 .word 0x00001370 + 104: 00000000 .word 0x00000000 + +00000108 : + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + 108: e7fe b.n 108 + ... + +0000010c : +{ + 10c: b510 push {r4, lr} + if (pSrc != pDest) { + 10e: 4a10 ldr r2, [pc, #64] ; (150 ) + 110: 4b10 ldr r3, [pc, #64] ; (154 ) + 112: 429a cmp r2, r3 + 114: d009 beq.n 12a + 116: 4b0f ldr r3, [pc, #60] ; (154 ) + 118: 4a0d ldr r2, [pc, #52] ; (150 ) + 11a: e003 b.n 124 + *pDest++ = *pSrc++; + 11c: 6811 ldr r1, [r2, #0] + 11e: 6019 str r1, [r3, #0] + 120: 3304 adds r3, #4 + 122: 3204 adds r2, #4 + for (; pDest < &_erelocate;) { + 124: 490c ldr r1, [pc, #48] ; (158 ) + 126: 428b cmp r3, r1 + 128: d3f8 bcc.n 11c + *pDest++ = *pSrc++; + 12a: 4b0c ldr r3, [pc, #48] ; (15c ) + 12c: e002 b.n 134 + *pDest++ = 0; + 12e: 2200 movs r2, #0 + 130: 601a str r2, [r3, #0] + 132: 3304 adds r3, #4 + for (pDest = &_szero; pDest < &_ezero;) { + 134: 4a0a ldr r2, [pc, #40] ; (160 ) + 136: 4293 cmp r3, r2 + 138: d3f9 bcc.n 12e + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + 13a: 4a0a ldr r2, [pc, #40] ; (164 ) + 13c: 21ff movs r1, #255 ; 0xff + 13e: 4b0a ldr r3, [pc, #40] ; (168 ) + 140: 438b bics r3, r1 + 142: 6093 str r3, [r2, #8] + __libc_init_array(); + 144: 4b09 ldr r3, [pc, #36] ; (16c ) + 146: 4798 blx r3 + main(); + 148: 4b09 ldr r3, [pc, #36] ; (170 ) + 14a: 4798 blx r3 + 14c: e7fe b.n 14c + 14e: 46c0 nop ; (mov r8, r8) + 150: 00001370 .word 0x00001370 + 154: 20000000 .word 0x20000000 + 158: 2000004c .word 0x2000004c + 15c: 2000004c .word 0x2000004c + 160: 2000020c .word 0x2000020c + 164: e000ed00 .word 0xe000ed00 + 168: 00000000 .word 0x00000000 + 16c: 00001281 .word 0x00001281 + 170: 00000a39 .word 0x00000a39 + +00000174 : +//*---------------------------------------------------------------------------- +//* \fn USB_Read +//* \brief Read available data from Endpoint OUT +//*---------------------------------------------------------------------------- +uint32_t USB_Read(P_USB_CDC pCdc, char *pData, uint32_t length) +{ + 174: b530 push {r4, r5, lr} + Usb *pUsb = pCdc->pUsb; + 176: 6804 ldr r4, [r0, #0] + uint32_t packetSize = 0; + uint8_t* p_cache_buffer; + + if (!read_job) { + 178: 4b1e ldr r3, [pc, #120] ; (1f4 ) + 17a: 781b ldrb r3, [r3, #0] + 17c: 2b00 cmp r3, #0 + 17e: d114 bne.n 1aa + /* Set the buffer address for ep data */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].ADDR.reg = (uint32_t)&udd_ep_out_cache_buffer[USB_EP_OUT-1]; + 180: 4b1d ldr r3, [pc, #116] ; (1f8 ) + 182: 481e ldr r0, [pc, #120] ; (1fc ) + 184: 6418 str r0, [r3, #64] ; 0x40 + /* Set the byte count as zero */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT = 0; + 186: 6c58 ldr r0, [r3, #68] ; 0x44 + 188: 0b80 lsrs r0, r0, #14 + 18a: 0385 lsls r5, r0, #14 + 18c: 645d str r5, [r3, #68] ; 0x44 + /* Set the byte count as zero */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.MULTI_PACKET_SIZE = 0; + 18e: 6c5d ldr r5, [r3, #68] ; 0x44 + 190: 481b ldr r0, [pc, #108] ; (200 ) + 192: 4028 ands r0, r5 + 194: 6458 str r0, [r3, #68] ; 0x44 + /* Start the reception by clearing the bank 0 ready bit */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSCLR.bit.BK0RDY = true; + 196: 20a2 movs r0, #162 ; 0xa2 + 198: 0040 lsls r0, r0, #1 + 19a: 5c23 ldrb r3, [r4, r0] + 19c: 2540 movs r5, #64 ; 0x40 + 19e: 432b orrs r3, r5 + 1a0: 5423 strb r3, [r4, r0] + /* set the user flag */ + read_job = true; + 1a2: 3844 subs r0, #68 ; 0x44 + 1a4: 38ff subs r0, #255 ; 0xff + 1a6: 4b13 ldr r3, [pc, #76] ; (1f4 ) + 1a8: 7018 strb r0, [r3, #0] + } + + /* Check for Transfer Complete 0 flag */ + if ( pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT0 ) { + 1aa: 2348 movs r3, #72 ; 0x48 + 1ac: 33ff adds r3, #255 ; 0xff + 1ae: 5ce3 ldrb r3, [r4, r3] + 1b0: 07db lsls r3, r3, #31 + 1b2: d51d bpl.n 1f0 + /* Set packet size */ + packetSize = MIN(usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT, length); + 1b4: 4b10 ldr r3, [pc, #64] ; (1f8 ) + 1b6: 6c5b ldr r3, [r3, #68] ; 0x44 + 1b8: 049b lsls r3, r3, #18 + 1ba: 0c9b lsrs r3, r3, #18 + 1bc: 4293 cmp r3, r2 + 1be: d203 bcs.n 1c8 + 1c0: 4b0d ldr r3, [pc, #52] ; (1f8 ) + 1c2: 6c5a ldr r2, [r3, #68] ; 0x44 + 1c4: 0492 lsls r2, r2, #18 + 1c6: 0c92 lsrs r2, r2, #18 + /* Copy read data to user buffer */ + //memcpy(pData, udd_ep_out_cache_buffer[USB_EP_OUT-1], packetSize); + p_cache_buffer = udd_ep_out_cache_buffer[USB_EP_OUT-1]; + for(uint32_t u32_index=0; u32_index < packetSize; u32_index++) + 1c8: 2300 movs r3, #0 + 1ca: e003 b.n 1d4 + { + pData[u32_index] = p_cache_buffer[u32_index]; + 1cc: 480b ldr r0, [pc, #44] ; (1fc ) + 1ce: 5cc0 ldrb r0, [r0, r3] + 1d0: 54c8 strb r0, [r1, r3] + for(uint32_t u32_index=0; u32_index < packetSize; u32_index++) + 1d2: 3301 adds r3, #1 + 1d4: 4293 cmp r3, r2 + 1d6: d3f9 bcc.n 1cc + } + + /* Clear the Transfer Complete 0 flag */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT0; + 1d8: 2148 movs r1, #72 ; 0x48 + 1da: 31ff adds r1, #255 ; 0xff + 1dc: 5c63 ldrb r3, [r4, r1] + 1de: 2001 movs r0, #1 + 1e0: 4303 orrs r3, r0 + 1e2: b2db uxtb r3, r3 + 1e4: 5463 strb r3, [r4, r1] + /* Clear the user flag */ + read_job = false; + 1e6: 2100 movs r1, #0 + 1e8: 4b02 ldr r3, [pc, #8] ; (1f4 ) + 1ea: 7019 strb r1, [r3, #0] + packetSize = MIN(usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT, length); + 1ec: 0010 movs r0, r2 + } + + return packetSize; +} + 1ee: bd30 pop {r4, r5, pc} + uint32_t packetSize = 0; + 1f0: 2000 movs r0, #0 + return packetSize; + 1f2: e7fc b.n 1ee + 1f4: 20000068 .word 0x20000068 + 1f8: 2000016c .word 0x2000016c + 1fc: 200000ac .word 0x200000ac + 200: f0003fff .word 0xf0003fff + +00000204 : + +} + + +uint32_t USB_Write(P_USB_CDC pCdc, const char *pData, uint32_t length, uint8_t ep_num) +{ + 204: b5f0 push {r4, r5, r6, r7, lr} + Usb *pUsb = pCdc->pUsb; + 206: 6805 ldr r5, [r0, #0] + uint32_t data_address; + uint8_t buf_index; + uint8_t* p_cache_buffer; + + /* Set buffer index */ + buf_index = (ep_num == 0) ? 0 : 1; + 208: 0018 movs r0, r3 + 20a: 1e44 subs r4, r0, #1 + 20c: 41a0 sbcs r0, r4 + 20e: b2c0 uxtb r0, r0 + + /* Check for requirement for multi-packet or auto zlp */ + if (length >= (1 << (usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.SIZE + 3))) { + 210: 001e movs r6, r3 + 212: 015f lsls r7, r3, #5 + 214: 4c22 ldr r4, [pc, #136] ; (2a0 ) + 216: 19e4 adds r4, r4, r7 + 218: 3410 adds r4, #16 + 21a: 6864 ldr r4, [r4, #4] + 21c: 0064 lsls r4, r4, #1 + 21e: 0f64 lsrs r4, r4, #29 + 220: 3403 adds r4, #3 + 222: 2701 movs r7, #1 + 224: 40a7 lsls r7, r4 + 226: 4297 cmp r7, r2 + 228: d82e bhi.n 288 + /* Update the EP data address */ + data_address = (uint32_t) pData; + 22a: 000f movs r7, r1 + /* Enable auto zlp */ + usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.AUTO_ZLP = true; + 22c: 0158 lsls r0, r3, #5 + 22e: 491c ldr r1, [pc, #112] ; (2a0 ) + 230: 1809 adds r1, r1, r0 + 232: 694c ldr r4, [r1, #20] + 234: 2080 movs r0, #128 ; 0x80 + 236: 0600 lsls r0, r0, #24 + 238: 4320 orrs r0, r4 + 23a: 6148 str r0, [r1, #20] + /* Update the EP data address */ + data_address = (uint32_t) &udd_ep_in_cache_buffer[buf_index]; + } + + /* Set the buffer address for ep data */ + usb_endpoint_table[ep_num].DeviceDescBank[1].ADDR.reg = data_address; + 23c: 0158 lsls r0, r3, #5 + 23e: 4918 ldr r1, [pc, #96] ; (2a0 ) + 240: 1809 adds r1, r1, r0 + 242: 000c movs r4, r1 + 244: 610f str r7, [r1, #16] + /* Set the byte count as zero */ + usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.BYTE_COUNT = length; + 246: 6948 ldr r0, [r1, #20] + 248: 0491 lsls r1, r2, #18 + 24a: 0c89 lsrs r1, r1, #18 + 24c: 0b80 lsrs r0, r0, #14 + 24e: 0380 lsls r0, r0, #14 + 250: 4301 orrs r1, r0 + 252: 6161 str r1, [r4, #20] + /* Set the multi packet size as zero for multi-packet transfers where length > ep size */ + usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.MULTI_PACKET_SIZE = 0; + 254: 6960 ldr r0, [r4, #20] + 256: 4913 ldr r1, [pc, #76] ; (2a4 ) + 258: 4001 ands r1, r0 + 25a: 6161 str r1, [r4, #20] + /* Clear the transfer complete flag */ + pUsb->DEVICE.DeviceEndpoint[ep_num].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT1; + 25c: 3308 adds r3, #8 + 25e: 015b lsls r3, r3, #5 + 260: 18eb adds r3, r5, r3 + 262: 79d9 ldrb r1, [r3, #7] + 264: 2002 movs r0, #2 + 266: 4301 orrs r1, r0 + 268: b2c9 uxtb r1, r1 + 26a: 71d9 strb r1, [r3, #7] + /* Set the bank as ready */ + pUsb->DEVICE.DeviceEndpoint[ep_num].EPSTATUSSET.bit.BK1RDY = true; + 26c: 7958 ldrb r0, [r3, #5] + 26e: 2180 movs r1, #128 ; 0x80 + 270: 4249 negs r1, r1 + 272: 4301 orrs r1, r0 + 274: 7159 strb r1, [r3, #5] + + /* Wait for transfer to complete */ + while (!( pUsb->DEVICE.DeviceEndpoint[ep_num].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT1 )); + 276: 0033 movs r3, r6 + 278: 3308 adds r3, #8 + 27a: 015b lsls r3, r3, #5 + 27c: 18eb adds r3, r5, r3 + 27e: 79db ldrb r3, [r3, #7] + 280: 079b lsls r3, r3, #30 + 282: d5f8 bpl.n 276 + + return length; +} + 284: 0010 movs r0, r2 + 286: bdf0 pop {r4, r5, r6, r7, pc} + p_cache_buffer = udd_ep_in_cache_buffer[buf_index]; + 288: 0180 lsls r0, r0, #6 + 28a: 4f07 ldr r7, [pc, #28] ; (2a8 ) + 28c: 19c7 adds r7, r0, r7 + for(uint32_t u32_index=0; u32_index < length; u32_index++) + 28e: 2400 movs r4, #0 + 290: e002 b.n 298 + p_cache_buffer[u32_index] = pData[u32_index]; + 292: 5d08 ldrb r0, [r1, r4] + 294: 5538 strb r0, [r7, r4] + for(uint32_t u32_index=0; u32_index < length; u32_index++) + 296: 3401 adds r4, #1 + 298: 4294 cmp r4, r2 + 29a: d3fa bcc.n 292 + 29c: e7ce b.n 23c + 29e: 46c0 nop ; (mov r8, r8) + 2a0: 2000016c .word 0x2000016c + 2a4: f0003fff .word 0xf0003fff + 2a8: 200000ec .word 0x200000ec + +000002ac : +//* \fn AT91F_USB_SendData +//* \brief Send Data through the control endpoint +//*---------------------------------------------------------------------------- + +static void AT91F_USB_SendData(P_USB_CDC pCdc, const char *pData, uint32_t length) +{ + 2ac: b510 push {r4, lr} + USB_Write(pCdc, pData, length, 0); + 2ae: 2300 movs r3, #0 + 2b0: 4c01 ldr r4, [pc, #4] ; (2b8 ) + 2b2: 47a0 blx r4 +} + 2b4: bd10 pop {r4, pc} + 2b6: 46c0 nop ; (mov r8, r8) + 2b8: 00000205 .word 0x00000205 + +000002bc : +{ + MCLK->APBCMASK.reg |= (1u << (inst + MCLK_APBCMASK_SERCOM0_Pos)); +} +static inline void enable_usb_digital_interface_clock(void) +{ + MCLK->APBBMASK.reg |= MCLK_APBBMASK_USB; + 2bc: 4a32 ldr r2, [pc, #200] ; (388 ) + 2be: 6993 ldr r3, [r2, #24] + 2c0: 2101 movs r1, #1 + 2c2: 430b orrs r3, r1 + 2c4: 6193 str r3, [r2, #24] + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + 2c6: 4b31 ldr r3, [pc, #196] ; (38c ) + 2c8: 4a31 ldr r2, [pc, #196] ; (390 ) + 2ca: 629a str r2, [r3, #40] ; 0x28 + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + 2cc: 4931 ldr r1, [pc, #196] ; (394 ) + 2ce: 6299 str r1, [r3, #40] ; 0x28 + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + 2d0: 629a str r2, [r3, #40] ; 0x28 + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + 2d2: 4a31 ldr r2, [pc, #196] ; (398 ) + 2d4: 629a str r2, [r3, #40] ; 0x28 + USB->DEVICE.CTRLA.bit.SWRST = 1; + 2d6: 2282 movs r2, #130 ; 0x82 + 2d8: 05d2 lsls r2, r2, #23 + 2da: 7813 ldrb r3, [r2, #0] + 2dc: 2101 movs r1, #1 + 2de: 430b orrs r3, r1 + 2e0: 7013 strb r3, [r2, #0] + while (USB->DEVICE.SYNCBUSY.bit.SWRST) { + 2e2: 2382 movs r3, #130 ; 0x82 + 2e4: 05db lsls r3, r3, #23 + 2e6: 789b ldrb r3, [r3, #2] + 2e8: 07db lsls r3, r3, #31 + 2ea: d4fa bmi.n 2e2 +static inline void load_usb_pin_pad_calibration_values(void) +{ + uint32_t pad_transn, pad_transp, pad_trim; + + /* Load Pad Calibration */ + pad_transn =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSN_POS / 32)) + 2ec: 4b2b ldr r3, [pc, #172] ; (39c ) + 2ee: 681a ldr r2, [r3, #0] + >> (NVM_USB_PAD_TRANSN_POS % 32)) & ((1 << NVM_USB_PAD_TRANSN_SIZE) - 1); + 2f0: 0b52 lsrs r2, r2, #13 + pad_transn =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSN_POS / 32)) + 2f2: 231f movs r3, #31 + 2f4: 4013 ands r3, r2 + + if (pad_transn == 0x1F) { + 2f6: 2b1f cmp r3, #31 + 2f8: d038 beq.n 36c + pad_transn = 5; + } + + USB->DEVICE.PADCAL.bit.TRANSN = pad_transn; + 2fa: 2182 movs r1, #130 ; 0x82 + 2fc: 05c9 lsls r1, r1, #23 + 2fe: 8d0a ldrh r2, [r1, #40] ; 0x28 + 300: 019b lsls r3, r3, #6 + 302: 4827 ldr r0, [pc, #156] ; (3a0 ) + 304: 4002 ands r2, r0 + 306: 4313 orrs r3, r2 + 308: 850b strh r3, [r1, #40] ; 0x28 + + pad_transp =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSP_POS / 32)) + 30a: 4b24 ldr r3, [pc, #144] ; (39c ) + 30c: 681a ldr r2, [r3, #0] + >> (NVM_USB_PAD_TRANSP_POS % 32)) & ((1 << NVM_USB_PAD_TRANSP_SIZE) - 1); + 30e: 0c92 lsrs r2, r2, #18 + pad_transp =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSP_POS / 32)) + 310: 231f movs r3, #31 + 312: 401a ands r2, r3 + + if (pad_transp == 0x1F) { + 314: 2a1f cmp r2, #31 + 316: d02b beq.n 370 + pad_transp = 29; + } + + USB->DEVICE.PADCAL.bit.TRANSP = pad_transp; + 318: 2182 movs r1, #130 ; 0x82 + 31a: 05c9 lsls r1, r1, #23 + 31c: 8d0b ldrh r3, [r1, #40] ; 0x28 + 31e: 201f movs r0, #31 + 320: 4383 bics r3, r0 + 322: 4313 orrs r3, r2 + 324: 850b strh r3, [r1, #40] ; 0x28 + + pad_trim =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRIM_POS / 32)) + 326: 4b1d ldr r3, [pc, #116] ; (39c ) + 328: 681a ldr r2, [r3, #0] + >> (NVM_USB_PAD_TRIM_POS % 32)) & ((1 << NVM_USB_PAD_TRIM_SIZE) - 1); + 32a: 0dd2 lsrs r2, r2, #23 + pad_trim =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRIM_POS / 32)) + 32c: 2307 movs r3, #7 + 32e: 4013 ands r3, r2 + + if (pad_trim == 0x7) { + 330: 2b07 cmp r3, #7 + 332: d01f beq.n 374 + pad_trim = 3; + } + + USB->DEVICE.PADCAL.bit.TRIM = pad_trim; + 334: 2282 movs r2, #130 ; 0x82 + 336: 05d2 lsls r2, r2, #23 + 338: 8d11 ldrh r1, [r2, #40] ; 0x28 + 33a: 031b lsls r3, r3, #12 + 33c: 4819 ldr r0, [pc, #100] ; (3a4 ) + 33e: 4001 ands r1, r0 + 340: 430b orrs r3, r1 + 342: 8513 strh r3, [r2, #40] ; 0x28 + USB->DEVICE.CTRLA.bit.MODE = 0; + 344: 7811 ldrb r1, [r2, #0] + 346: 237f movs r3, #127 ; 0x7f + 348: 400b ands r3, r1 + 34a: 7013 strb r3, [r2, #0] + USB->DEVICE.CTRLA.bit.RUNSTDBY = true; + 34c: 7813 ldrb r3, [r2, #0] + 34e: 2104 movs r1, #4 + 350: 430b orrs r3, r1 + 352: 7013 strb r3, [r2, #0] + USB->DEVICE.DESCADD.reg = (uint32_t)(&usb_endpoint_table[0]); + 354: 4b14 ldr r3, [pc, #80] ; (3a8 ) + 356: 6253 str r3, [r2, #36] ; 0x24 + USB->DEVICE.CTRLB.bit.SPDCONF = USB_DEVICE_CTRLB_SPDCONF_FS_Val; + 358: 8911 ldrh r1, [r2, #8] + 35a: 200c movs r0, #12 + 35c: 4381 bics r1, r0 + 35e: 8111 strh r1, [r2, #8] + USB->DEVICE.CTRLB.reg &= ~USB_DEVICE_CTRLB_DETACH; + 360: 8911 ldrh r1, [r2, #8] + 362: 380b subs r0, #11 + 364: 4381 bics r1, r0 + 366: 8111 strh r1, [r2, #8] + for(uint32_t u32_index=0; u32_index < sizeof(usb_endpoint_table); u32_index++) + 368: 2200 movs r2, #0 + 36a: e009 b.n 380 + pad_transn = 5; + 36c: 3b1a subs r3, #26 + 36e: e7c4 b.n 2fa + pad_transp = 29; + 370: 3a02 subs r2, #2 + 372: e7d1 b.n 318 + pad_trim = 3; + 374: 3b04 subs r3, #4 + 376: e7dd b.n 334 + *pdata++ = 0; + 378: 2100 movs r1, #0 + 37a: 7019 strb r1, [r3, #0] + for(uint32_t u32_index=0; u32_index < sizeof(usb_endpoint_table); u32_index++) + 37c: 3201 adds r2, #1 + *pdata++ = 0; + 37e: 3301 adds r3, #1 + for(uint32_t u32_index=0; u32_index < sizeof(usb_endpoint_table); u32_index++) + 380: 2a7f cmp r2, #127 ; 0x7f + 382: d9f9 bls.n 378 +} + 384: 4770 bx lr + 386: 46c0 nop ; (mov r8, r8) + 388: 40000800 .word 0x40000800 + 38c: 41006000 .word 0x41006000 + 390: 56030000 .word 0x56030000 + 394: d6030100 .word 0xd6030100 + 398: d6030200 .word 0xd6030200 + 39c: 00806018 .word 0x00806018 + 3a0: fffff83f .word 0xfffff83f + 3a4: ffff8fff .word 0xffff8fff + 3a8: 2000016c .word 0x2000016c + +000003ac : + pCdc->pUsb = pUsb; + 3ac: 6001 str r1, [r0, #0] + pCdc->currentConfiguration = 0; + 3ae: 2300 movs r3, #0 + 3b0: 7103 strb r3, [r0, #4] + pCdc->currentConnection = 0; + 3b2: 7143 strb r3, [r0, #5] + pCdc->IsConfigured = USB_IsConfigured; + 3b4: 4b05 ldr r3, [pc, #20] ; (3cc ) + 3b6: 6083 str r3, [r0, #8] + pCdc->Write = USB_Write; + 3b8: 4b05 ldr r3, [pc, #20] ; (3d0 ) + 3ba: 60c3 str r3, [r0, #12] + pCdc->Read = USB_Read; + 3bc: 4b05 ldr r3, [pc, #20] ; (3d4 ) + 3be: 6103 str r3, [r0, #16] + pCdc->pUsb->DEVICE.CTRLA.bit.ENABLE = true; + 3c0: 780b ldrb r3, [r1, #0] + 3c2: 2202 movs r2, #2 + 3c4: 4313 orrs r3, r2 + 3c6: 700b strb r3, [r1, #0] +} + 3c8: 4770 bx lr + 3ca: 46c0 nop ; (mov r8, r8) + 3cc: 00000809 .word 0x00000809 + 3d0: 00000205 .word 0x00000205 + 3d4: 00000175 .word 0x00000175 + +000003d8 : +{ + 3d8: b530 push {r4, r5, lr} + Usb *pUsb = pCdc->pUsb; + 3da: 6804 ldr r4, [r0, #0] + if (read_job) { + 3dc: 4b16 ldr r3, [pc, #88] ; (438 ) + 3de: 781b ldrb r3, [r3, #0] + 3e0: 2b00 cmp r3, #0 + 3e2: d008 beq.n 3f6 + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSSET.bit.BK0RDY = true; + 3e4: 2046 movs r0, #70 ; 0x46 + 3e6: 30ff adds r0, #255 ; 0xff + 3e8: 5c23 ldrb r3, [r4, r0] + 3ea: 2540 movs r5, #64 ; 0x40 + 3ec: 432b orrs r3, r5 + 3ee: 5423 strb r3, [r4, r0] + read_job = false; + 3f0: 2000 movs r0, #0 + 3f2: 4b11 ldr r3, [pc, #68] ; (438 ) + 3f4: 7018 strb r0, [r3, #0] + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].ADDR.reg = ((uint32_t)pData); + 3f6: 4811 ldr r0, [pc, #68] ; (43c ) + 3f8: 6401 str r1, [r0, #64] ; 0x40 + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT = 0; + 3fa: 6c43 ldr r3, [r0, #68] ; 0x44 + 3fc: 0b9b lsrs r3, r3, #14 + 3fe: 0399 lsls r1, r3, #14 + 400: 6441 str r1, [r0, #68] ; 0x44 + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.MULTI_PACKET_SIZE = length; + 402: 6c41 ldr r1, [r0, #68] ; 0x44 + 404: 0493 lsls r3, r2, #18 + 406: 091b lsrs r3, r3, #4 + 408: 4d0d ldr r5, [pc, #52] ; (440 ) + 40a: 4029 ands r1, r5 + 40c: 430b orrs r3, r1 + 40e: 6443 str r3, [r0, #68] ; 0x44 + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSCLR.bit.BK0RDY = true; + 410: 21a2 movs r1, #162 ; 0xa2 + 412: 0049 lsls r1, r1, #1 + 414: 5c63 ldrb r3, [r4, r1] + 416: 2040 movs r0, #64 ; 0x40 + 418: 4303 orrs r3, r0 + 41a: 5463 strb r3, [r4, r1] + while (!( pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT0 )); + 41c: 2348 movs r3, #72 ; 0x48 + 41e: 33ff adds r3, #255 ; 0xff + 420: 5ce3 ldrb r3, [r4, r3] + 422: 07db lsls r3, r3, #31 + 424: d5fa bpl.n 41c + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT0; + 426: 2148 movs r1, #72 ; 0x48 + 428: 31ff adds r1, #255 ; 0xff + 42a: 5c63 ldrb r3, [r4, r1] + 42c: 2001 movs r0, #1 + 42e: 4303 orrs r3, r0 + 430: b2db uxtb r3, r3 + 432: 5463 strb r3, [r4, r1] +} + 434: 0010 movs r0, r2 + 436: bd30 pop {r4, r5, pc} + 438: 20000068 .word 0x20000068 + 43c: 2000016c .word 0x2000016c + 440: f0003fff .word 0xf0003fff + +00000444 : +//* \brief Send zero length packet through the control endpoint +//*---------------------------------------------------------------------------- +void AT91F_USB_SendZlp(Usb *pUsb) +{ + /* Set the byte count as zero */ + usb_endpoint_table[0].DeviceDescBank[1].PCKSIZE.bit.BYTE_COUNT = 0; + 444: 4a0c ldr r2, [pc, #48] ; (478 ) + 446: 6953 ldr r3, [r2, #20] + 448: 0b9b lsrs r3, r3, #14 + 44a: 0399 lsls r1, r3, #14 + 44c: 6151 str r1, [r2, #20] + /* Clear the transfer complete flag */ + pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT1; + 44e: 2208 movs r2, #8 + 450: 32ff adds r2, #255 ; 0xff + 452: 5c83 ldrb r3, [r0, r2] + 454: 2102 movs r1, #2 + 456: 430b orrs r3, r1 + 458: b2db uxtb r3, r3 + 45a: 5483 strb r3, [r0, r2] + /* Set the bank as ready */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.bit.BK1RDY = true; + 45c: 2206 movs r2, #6 + 45e: 32ff adds r2, #255 ; 0xff + 460: 5c81 ldrb r1, [r0, r2] + 462: 2380 movs r3, #128 ; 0x80 + 464: 425b negs r3, r3 + 466: 430b orrs r3, r1 + 468: 5483 strb r3, [r0, r2] + /* Wait for transfer to complete */ + while (!( pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT1 )); + 46a: 2308 movs r3, #8 + 46c: 33ff adds r3, #255 ; 0xff + 46e: 5cc3 ldrb r3, [r0, r3] + 470: 079b lsls r3, r3, #30 + 472: d5fa bpl.n 46a +} + 474: 4770 bx lr + 476: 46c0 nop ; (mov r8, r8) + 478: 2000016c .word 0x2000016c + +0000047c : +//* \brief Stall the control endpoint +//*---------------------------------------------------------------------------- +void AT91F_USB_SendStall(Usb *pUsb, bool direction_in) +{ + /* Check the direction */ + if (direction_in) { + 47c: 2900 cmp r1, #0 + 47e: d104 bne.n 48a + /* Set STALL request on IN direction */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ1; + } else { + /* Set STALL request on OUT direction */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ0; + 480: 2210 movs r2, #16 + 482: 2306 movs r3, #6 + 484: 33ff adds r3, #255 ; 0xff + 486: 54c2 strb r2, [r0, r3] + } +} + 488: 4770 bx lr + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ1; + 48a: 2220 movs r2, #32 + 48c: 2306 movs r3, #6 + 48e: 33ff adds r3, #255 ; 0xff + 490: 54c2 strb r2, [r0, r3] + 492: e7f9 b.n 488 + +00000494 : +//*---------------------------------------------------------------------------- +//* \fn AT91F_CDC_Enumerate +//* \brief This function is a callback invoked when a SETUP packet is received +//*---------------------------------------------------------------------------- +void AT91F_CDC_Enumerate(P_USB_CDC pCdc) +{ + 494: b5f0 push {r4, r5, r6, r7, lr} + 496: 46d6 mov lr, sl + 498: 464f mov r7, r9 + 49a: 4646 mov r6, r8 + 49c: b5c0 push {r6, r7, lr} + 49e: b082 sub sp, #8 + Usb *pUsb = pCdc->pUsb; + 4a0: 6804 ldr r4, [r0, #0] + uint8_t bmRequestType, bRequest, dir; + uint16_t wValue, wIndex, wLength, wStatus; + + /* Clear the Received Setup flag */ + pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_RXSTP; + 4a2: 2208 movs r2, #8 + 4a4: 32ff adds r2, #255 ; 0xff + 4a6: 5ca3 ldrb r3, [r4, r2] + 4a8: 2110 movs r1, #16 + 4aa: 430b orrs r3, r1 + 4ac: b2db uxtb r3, r3 + 4ae: 54a3 strb r3, [r4, r2] + + /* Read the USB request parameters */ + bmRequestType = udd_ep_out_cache_buffer[0][0]; + 4b0: 49c5 ldr r1, [pc, #788] ; (7c8 ) + 4b2: 780e ldrb r6, [r1, #0] + bRequest = udd_ep_out_cache_buffer[0][1]; + 4b4: 784b ldrb r3, [r1, #1] + wValue = (udd_ep_out_cache_buffer[0][2] & 0xFF); + 4b6: 788d ldrb r5, [r1, #2] + wValue |= (udd_ep_out_cache_buffer[0][3] << 8); + 4b8: 78ca ldrb r2, [r1, #3] + 4ba: 0212 lsls r2, r2, #8 + 4bc: 4315 orrs r5, r2 + 4be: b22d sxth r5, r5 + 4c0: b2aa uxth r2, r5 + 4c2: 4694 mov ip, r2 + wIndex = (udd_ep_out_cache_buffer[0][4] & 0xFF); + 4c4: 790f ldrb r7, [r1, #4] + wIndex |= (udd_ep_out_cache_buffer[0][5] << 8); + 4c6: 794a ldrb r2, [r1, #5] + 4c8: 0212 lsls r2, r2, #8 + 4ca: 4317 orrs r7, r2 + 4cc: b23f sxth r7, r7 + 4ce: b2ba uxth r2, r7 + 4d0: 4690 mov r8, r2 + wLength = (udd_ep_out_cache_buffer[0][6] & 0xFF); + 4d2: 798a ldrb r2, [r1, #6] + 4d4: 4691 mov r9, r2 + wLength |= (udd_ep_out_cache_buffer[0][7] << 8); + 4d6: 79ca ldrb r2, [r1, #7] + 4d8: 0212 lsls r2, r2, #8 + 4da: 4649 mov r1, r9 + 4dc: 430a orrs r2, r1 + 4de: 4692 mov sl, r2 + + /* Clear the Bank 0 ready flag on Control OUT */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK0RDY; + 4e0: 2140 movs r1, #64 ; 0x40 + 4e2: 4689 mov r9, r1 + 4e4: 31c4 adds r1, #196 ; 0xc4 + 4e6: 464a mov r2, r9 + 4e8: 5462 strb r2, [r4, r1] + + /* Handle supported standard device request Cf Table 9-3 in USB specification Rev 1.1 */ + switch ((bRequest << 8) | bmRequestType) { + 4ea: 021b lsls r3, r3, #8 + 4ec: 4333 orrs r3, r6 + 4ee: 49b7 ldr r1, [pc, #732] ; (7cc ) + 4f0: 428b cmp r3, r1 + 4f2: d100 bne.n 4f6 + 4f4: e0ff b.n 6f6 + 4f6: dd16 ble.n 526 + 4f8: 2188 movs r1, #136 ; 0x88 + 4fa: 0109 lsls r1, r1, #4 + 4fc: 428b cmp r3, r1 + 4fe: d100 bne.n 502 + 500: e0ba b.n 678 + 502: dd34 ble.n 56e + 504: 49b2 ldr r1, [pc, #712] ; (7d0 ) + 506: 428b cmp r3, r1 + 508: d100 bne.n 50c + 50a: e150 b.n 7ae + 50c: dd53 ble.n 5b6 + 50e: 49b1 ldr r1, [pc, #708] ; (7d4 ) + 510: 428b cmp r3, r1 + 512: d100 bne.n 516 + 514: e14f b.n 7b6 + 516: 4ab0 ldr r2, [pc, #704] ; (7d8 ) + 518: 4293 cmp r3, r2 + 51a: d113 bne.n 544 + /* Send current line coding */ + AT91F_USB_SendData(pCdc, (char *) &line_coding, MIN(sizeof(usb_cdc_line_coding_t), wLength)); + break; + case SET_CONTROL_LINE_STATE: + /* Store the current connection */ + pCdc->currentConnection = wValue; + 51c: 7145 strb r5, [r0, #5] + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + 51e: 0020 movs r0, r4 + 520: 4bae ldr r3, [pc, #696] ; (7dc ) + 522: 4798 blx r3 + break; + 524: e0a2 b.n 66c + switch ((bRequest << 8) | bmRequestType) { + 526: 2280 movs r2, #128 ; 0x80 + 528: 0052 lsls r2, r2, #1 + 52a: 4293 cmp r3, r2 + 52c: d100 bne.n 530 + 52e: e0f1 b.n 714 + 530: dc0d bgt.n 54e + 532: 2b81 cmp r3, #129 ; 0x81 + 534: d100 bne.n 538 + 536: e0ac b.n 692 + 538: 2b82 cmp r3, #130 ; 0x82 + 53a: d100 bne.n 53e + 53c: e0b1 b.n 6a2 + 53e: 2b80 cmp r3, #128 ; 0x80 + 540: d100 bne.n 544 + 542: e09e b.n 682 + default: + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + 544: 2101 movs r1, #1 + 546: 0020 movs r0, r4 + 548: 4ba5 ldr r3, [pc, #660] ; (7e0 ) + 54a: 4798 blx r3 + break; + } +} + 54c: e08e b.n 66c + switch ((bRequest << 8) | bmRequestType) { + 54e: 2281 movs r2, #129 ; 0x81 + 550: 0052 lsls r2, r2, #1 + 552: 4293 cmp r3, r2 + 554: d100 bne.n 558 + 556: e0e6 b.n 726 + 558: da00 bge.n 55c + 55a: e0e0 b.n 71e + 55c: 32ff adds r2, #255 ; 0xff + 55e: 32ff adds r2, #255 ; 0xff + 560: 4293 cmp r3, r2 + 562: d1ef bne.n 544 + AT91F_USB_SendStall(pUsb, true); + 564: 2101 movs r1, #1 + 566: 0020 movs r0, r4 + 568: 4b9d ldr r3, [pc, #628] ; (7e0 ) + 56a: 4798 blx r3 + break; + 56c: e07e b.n 66c + switch ((bRequest << 8) | bmRequestType) { + 56e: 21a0 movs r1, #160 ; 0xa0 + 570: 00c9 lsls r1, r1, #3 + 572: 428b cmp r3, r1 + 574: d072 beq.n 65c + 576: 3181 adds r1, #129 ; 0x81 + 578: 31ff adds r1, #255 ; 0xff + 57a: 428b cmp r3, r1 + 57c: d04d beq.n 61a + 57e: 4a99 ldr r2, [pc, #612] ; (7e4 ) + 580: 4293 cmp r3, r2 + 582: d1df bne.n 544 + wIndex &= 0x0F; + 584: 230f movs r3, #15 + 586: 4642 mov r2, r8 + 588: 4013 ands r3, r2 + if ((wValue == 0) && wIndex && (wIndex <= 3)) { + 58a: 4662 mov r2, ip + 58c: 2a00 cmp r2, #0 + 58e: d000 beq.n 592 + 590: e0bb b.n 70a + 592: 2b00 cmp r3, #0 + 594: d100 bne.n 598 + 596: e0b8 b.n 70a + 598: 2b03 cmp r3, #3 + 59a: d900 bls.n 59e + 59c: e0b5 b.n 70a + if (dir) { + 59e: 063a lsls r2, r7, #24 + 5a0: d500 bpl.n 5a4 + 5a2: e0ac b.n 6fe + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ0; + 5a4: 3308 adds r3, #8 + 5a6: 015b lsls r3, r3, #5 + 5a8: 18e3 adds r3, r4, r3 + 5aa: 2210 movs r2, #16 + 5ac: 715a strb r2, [r3, #5] + AT91F_USB_SendZlp(pUsb); + 5ae: 0020 movs r0, r4 + 5b0: 4b8a ldr r3, [pc, #552] ; (7dc ) + 5b2: 4798 blx r3 + 5b4: e05a b.n 66c + switch ((bRequest << 8) | bmRequestType) { + 5b6: 2290 movs r2, #144 ; 0x90 + 5b8: 0112 lsls r2, r2, #4 + 5ba: 4293 cmp r3, r2 + 5bc: d1c2 bne.n 544 + pCdc->currentConfiguration = (uint8_t)wValue; + 5be: 7105 strb r5, [r0, #4] + AT91F_USB_SendZlp(pUsb); + 5c0: 0020 movs r0, r4 + 5c2: 4b86 ldr r3, [pc, #536] ; (7dc ) + 5c4: 4798 blx r3 + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE0(3); + 5c6: 2203 movs r2, #3 + 5c8: 23a0 movs r3, #160 ; 0xa0 + 5ca: 005b lsls r3, r3, #1 + 5cc: 54e2 strb r2, [r4, r3] + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.SIZE = 3; + 5ce: 4b86 ldr r3, [pc, #536] ; (7e8 ) + 5d0: 6c58 ldr r0, [r3, #68] ; 0x44 + 5d2: 4a86 ldr r2, [pc, #536] ; (7ec ) + 5d4: 4010 ands r0, r2 + 5d6: 21c0 movs r1, #192 ; 0xc0 + 5d8: 0589 lsls r1, r1, #22 + 5da: 4308 orrs r0, r1 + 5dc: 6458 str r0, [r3, #68] ; 0x44 + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_BK0RDY; + 5de: 2540 movs r5, #64 ; 0x40 + 5e0: 2046 movs r0, #70 ; 0x46 + 5e2: 30ff adds r0, #255 ; 0xff + 5e4: 5425 strb r5, [r4, r0] + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].ADDR.reg = (uint32_t)&udd_ep_out_cache_buffer[1]; + 5e6: 4882 ldr r0, [pc, #520] ; (7f0 ) + 5e8: 6418 str r0, [r3, #64] ; 0x40 + pUsb->DEVICE.DeviceEndpoint[USB_EP_IN].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE1(3); + 5ea: 2630 movs r6, #48 ; 0x30 + 5ec: 2090 movs r0, #144 ; 0x90 + 5ee: 0040 lsls r0, r0, #1 + 5f0: 5426 strb r6, [r4, r0] + usb_endpoint_table[USB_EP_IN].DeviceDescBank[1].PCKSIZE.bit.SIZE = 3; + 5f2: 6b58 ldr r0, [r3, #52] ; 0x34 + 5f4: 4010 ands r0, r2 + 5f6: 4301 orrs r1, r0 + 5f8: 6359 str r1, [r3, #52] ; 0x34 + pUsb->DEVICE.DeviceEndpoint[USB_EP_IN].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK1RDY; + 5fa: 2180 movs r1, #128 ; 0x80 + 5fc: 2092 movs r0, #146 ; 0x92 + 5fe: 0040 lsls r0, r0, #1 + 600: 5421 strb r1, [r4, r0] + usb_endpoint_table[USB_EP_IN].DeviceDescBank[1].ADDR.reg = (uint32_t)&udd_ep_in_cache_buffer[1]; + 602: 487c ldr r0, [pc, #496] ; (7f4 ) + 604: 6318 str r0, [r3, #48] ; 0x30 + pUsb->DEVICE.DeviceEndpoint[USB_EP_COMM].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE1(4); + 606: 20b0 movs r0, #176 ; 0xb0 + 608: 0040 lsls r0, r0, #1 + 60a: 5425 strb r5, [r4, r0] + usb_endpoint_table[USB_EP_COMM].DeviceDescBank[1].PCKSIZE.bit.SIZE = 0; + 60c: 6f58 ldr r0, [r3, #116] ; 0x74 + 60e: 4002 ands r2, r0 + 610: 675a str r2, [r3, #116] ; 0x74 + pUsb->DEVICE.DeviceEndpoint[USB_EP_COMM].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK1RDY; + 612: 23b2 movs r3, #178 ; 0xb2 + 614: 005b lsls r3, r3, #1 + 616: 54e1 strb r1, [r4, r3] + break; + 618: e028 b.n 66c + if (wValue == 0x100) + 61a: 2380 movs r3, #128 ; 0x80 + 61c: 005b lsls r3, r3, #1 + 61e: 459c cmp ip, r3 + 620: d00b beq.n 63a + else if (wValue == 0x200) + 622: 2380 movs r3, #128 ; 0x80 + 624: 009b lsls r3, r3, #2 + 626: 459c cmp ip, r3 + 628: d113 bne.n 652 + AT91F_USB_SendData(pCdc, cfgDescriptor, MIN(sizeof(cfgDescriptor), wLength)); + 62a: 4653 mov r3, sl + 62c: 2b43 cmp r3, #67 ; 0x43 + 62e: d80e bhi.n 64e + 630: 4652 mov r2, sl + 632: 4971 ldr r1, [pc, #452] ; (7f8 ) + 634: 4b71 ldr r3, [pc, #452] ; (7fc ) + 636: 4798 blx r3 + 638: e018 b.n 66c + AT91F_USB_SendData(pCdc, devDescriptor, MIN(sizeof(devDescriptor), wLength)); + 63a: 4653 mov r3, sl + 63c: 2b12 cmp r3, #18 + 63e: d804 bhi.n 64a + 640: 4652 mov r2, sl + 642: 496f ldr r1, [pc, #444] ; (800 ) + 644: 4b6d ldr r3, [pc, #436] ; (7fc ) + 646: 4798 blx r3 + 648: e010 b.n 66c + 64a: 2212 movs r2, #18 + 64c: e7f9 b.n 642 + AT91F_USB_SendData(pCdc, cfgDescriptor, MIN(sizeof(cfgDescriptor), wLength)); + 64e: 2243 movs r2, #67 ; 0x43 + 650: e7ef b.n 632 + AT91F_USB_SendStall(pUsb, true); + 652: 2101 movs r1, #1 + 654: 0020 movs r0, r4 + 656: 4b62 ldr r3, [pc, #392] ; (7e0 ) + 658: 4798 blx r3 + 65a: e007 b.n 66c + AT91F_USB_SendZlp(pUsb); + 65c: 0020 movs r0, r4 + 65e: 4b5f ldr r3, [pc, #380] ; (7dc ) + 660: 4798 blx r3 + pUsb->DEVICE.DADD.reg = USB_DEVICE_DADD_ADDEN | wValue; + 662: 2280 movs r2, #128 ; 0x80 + 664: 4252 negs r2, r2 + 666: 432a orrs r2, r5 + 668: b2d2 uxtb r2, r2 + 66a: 72a2 strb r2, [r4, #10] +} + 66c: b002 add sp, #8 + 66e: bc1c pop {r2, r3, r4} + 670: 4690 mov r8, r2 + 672: 4699 mov r9, r3 + 674: 46a2 mov sl, r4 + 676: bdf0 pop {r4, r5, r6, r7, pc} + AT91F_USB_SendData(pCdc, (char *) &(pCdc->currentConfiguration), sizeof(pCdc->currentConfiguration)); + 678: 1d01 adds r1, r0, #4 + 67a: 2201 movs r2, #1 + 67c: 4b5f ldr r3, [pc, #380] ; (7fc ) + 67e: 4798 blx r3 + break; + 680: e7f4 b.n 66c + wStatus = 0; + 682: 466b mov r3, sp + 684: 1d99 adds r1, r3, #6 + 686: 2300 movs r3, #0 + 688: 800b strh r3, [r1, #0] + AT91F_USB_SendData(pCdc, (char *) &wStatus, sizeof(wStatus)); + 68a: 2202 movs r2, #2 + 68c: 4b5b ldr r3, [pc, #364] ; (7fc ) + 68e: 4798 blx r3 + break; + 690: e7ec b.n 66c + wStatus = 0; + 692: 466b mov r3, sp + 694: 1d99 adds r1, r3, #6 + 696: 2300 movs r3, #0 + 698: 800b strh r3, [r1, #0] + AT91F_USB_SendData(pCdc, (char *) &wStatus, sizeof(wStatus)); + 69a: 2202 movs r2, #2 + 69c: 4b57 ldr r3, [pc, #348] ; (7fc ) + 69e: 4798 blx r3 + break; + 6a0: e7e4 b.n 66c + wStatus = 0; + 6a2: 2200 movs r2, #0 + 6a4: 466b mov r3, sp + 6a6: 80da strh r2, [r3, #6] + dir = wIndex & 80; + 6a8: 3250 adds r2, #80 ; 0x50 + 6aa: 403a ands r2, r7 + wIndex &= 0x0F; + 6ac: 230f movs r3, #15 + 6ae: 4641 mov r1, r8 + 6b0: 400b ands r3, r1 + if (wIndex <= 3) { + 6b2: 2b03 cmp r3, #3 + 6b4: d81a bhi.n 6ec + if (dir) { + 6b6: 2a00 cmp r2, #0 + 6b8: d00e beq.n 6d8 + wStatus = (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ1) ? 1 : 0; + 6ba: 3308 adds r3, #8 + 6bc: 015b lsls r3, r3, #5 + 6be: 18e4 adds r4, r4, r3 + 6c0: 79a2 ldrb r2, [r4, #6] + 6c2: 0952 lsrs r2, r2, #5 + 6c4: 2301 movs r3, #1 + 6c6: 4013 ands r3, r2 + 6c8: 466a mov r2, sp + 6ca: 80d3 strh r3, [r2, #6] + AT91F_USB_SendData(pCdc, (char *) &wStatus, sizeof(wStatus)); + 6cc: 2202 movs r2, #2 + 6ce: 466b mov r3, sp + 6d0: 1d99 adds r1, r3, #6 + 6d2: 4b4a ldr r3, [pc, #296] ; (7fc ) + 6d4: 4798 blx r3 + 6d6: e7c9 b.n 66c + wStatus = (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ0) ? 1 : 0; + 6d8: 3308 adds r3, #8 + 6da: 015b lsls r3, r3, #5 + 6dc: 18e4 adds r4, r4, r3 + 6de: 79a2 ldrb r2, [r4, #6] + 6e0: 0912 lsrs r2, r2, #4 + 6e2: 2301 movs r3, #1 + 6e4: 4013 ands r3, r2 + 6e6: 466a mov r2, sp + 6e8: 80d3 strh r3, [r2, #6] + 6ea: e7ef b.n 6cc + AT91F_USB_SendStall(pUsb, true); + 6ec: 2101 movs r1, #1 + 6ee: 0020 movs r0, r4 + 6f0: 4b3b ldr r3, [pc, #236] ; (7e0 ) + 6f2: 4798 blx r3 + 6f4: e7ba b.n 66c + AT91F_USB_SendZlp(pUsb); + 6f6: 0020 movs r0, r4 + 6f8: 4b38 ldr r3, [pc, #224] ; (7dc ) + 6fa: 4798 blx r3 + break; + 6fc: e7b6 b.n 66c + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ1; + 6fe: 3308 adds r3, #8 + 700: 015b lsls r3, r3, #5 + 702: 18e3 adds r3, r4, r3 + 704: 2220 movs r2, #32 + 706: 715a strb r2, [r3, #5] + 708: e751 b.n 5ae + AT91F_USB_SendStall(pUsb, true); + 70a: 2101 movs r1, #1 + 70c: 0020 movs r0, r4 + 70e: 4b34 ldr r3, [pc, #208] ; (7e0 ) + 710: 4798 blx r3 + 712: e7ab b.n 66c + AT91F_USB_SendStall(pUsb, true); + 714: 2101 movs r1, #1 + 716: 0020 movs r0, r4 + 718: 4b31 ldr r3, [pc, #196] ; (7e0 ) + 71a: 4798 blx r3 + break; + 71c: e7a6 b.n 66c + AT91F_USB_SendZlp(pUsb); + 71e: 0020 movs r0, r4 + 720: 4b2e ldr r3, [pc, #184] ; (7dc ) + 722: 4798 blx r3 + break; + 724: e7a2 b.n 66c + wIndex &= 0x0F; + 726: 230f movs r3, #15 + 728: 4642 mov r2, r8 + 72a: 4013 ands r3, r2 + if ((wValue == 0) && wIndex && (wIndex <= 3)) { + 72c: 4662 mov r2, ip + 72e: 2a00 cmp r2, #0 + 730: d138 bne.n 7a4 + 732: 2b00 cmp r3, #0 + 734: d036 beq.n 7a4 + 736: 2b03 cmp r3, #3 + 738: d834 bhi.n 7a4 + if (dir) { + 73a: 063a lsls r2, r7, #24 + 73c: d41a bmi.n 774 + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ0) { + 73e: 001a movs r2, r3 + 740: 3208 adds r2, #8 + 742: 0152 lsls r2, r2, #5 + 744: 18a2 adds r2, r4, r2 + 746: 7992 ldrb r2, [r2, #6] + 748: 06d2 lsls r2, r2, #27 + 74a: d50f bpl.n 76c + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_STALLRQ0; + 74c: 001a movs r2, r3 + 74e: 3208 adds r2, #8 + 750: 0152 lsls r2, r2, #5 + 752: 18a2 adds r2, r4, r2 + 754: 2110 movs r1, #16 + 756: 7111 strb r1, [r2, #4] + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_STALL0) { + 758: 79d2 ldrb r2, [r2, #7] + 75a: 0692 lsls r2, r2, #26 + 75c: d506 bpl.n 76c + pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_STALL0; + 75e: 3308 adds r3, #8 + 760: 015b lsls r3, r3, #5 + 762: 18e3 adds r3, r4, r3 + 764: 2220 movs r2, #32 + 766: 71da strb r2, [r3, #7] + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSSET_DTGLOUT; + 768: 3a1f subs r2, #31 + 76a: 711a strb r2, [r3, #4] + AT91F_USB_SendZlp(pUsb); + 76c: 0020 movs r0, r4 + 76e: 4b1b ldr r3, [pc, #108] ; (7dc ) + 770: 4798 blx r3 + 772: e77b b.n 66c + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ1) { + 774: 001a movs r2, r3 + 776: 3208 adds r2, #8 + 778: 0152 lsls r2, r2, #5 + 77a: 18a2 adds r2, r4, r2 + 77c: 7992 ldrb r2, [r2, #6] + 77e: 0692 lsls r2, r2, #26 + 780: d5f4 bpl.n 76c + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_STALLRQ1; + 782: 001a movs r2, r3 + 784: 3208 adds r2, #8 + 786: 0152 lsls r2, r2, #5 + 788: 18a2 adds r2, r4, r2 + 78a: 2120 movs r1, #32 + 78c: 7111 strb r1, [r2, #4] + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_STALL1) { + 78e: 79d2 ldrb r2, [r2, #7] + 790: 0652 lsls r2, r2, #25 + 792: d5eb bpl.n 76c + pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_STALL1; + 794: 3308 adds r3, #8 + 796: 015b lsls r3, r3, #5 + 798: 18e3 adds r3, r4, r3 + 79a: 2240 movs r2, #64 ; 0x40 + 79c: 71da strb r2, [r3, #7] + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSSET_DTGLIN; + 79e: 3a3e subs r2, #62 ; 0x3e + 7a0: 711a strb r2, [r3, #4] + 7a2: e7e3 b.n 76c + AT91F_USB_SendStall(pUsb, true); + 7a4: 2101 movs r1, #1 + 7a6: 0020 movs r0, r4 + 7a8: 4b0d ldr r3, [pc, #52] ; (7e0 ) + 7aa: 4798 blx r3 + 7ac: e75e b.n 66c + AT91F_USB_SendZlp(pUsb); + 7ae: 0020 movs r0, r4 + 7b0: 4b0a ldr r3, [pc, #40] ; (7dc ) + 7b2: 4798 blx r3 + break; + 7b4: e75a b.n 66c + AT91F_USB_SendData(pCdc, (char *) &line_coding, MIN(sizeof(usb_cdc_line_coding_t), wLength)); + 7b6: 4653 mov r3, sl + 7b8: 2b08 cmp r3, #8 + 7ba: d823 bhi.n 804 + 7bc: 4652 mov r2, sl + 7be: 490e ldr r1, [pc, #56] ; (7f8 ) + 7c0: 3144 adds r1, #68 ; 0x44 + 7c2: 4b0e ldr r3, [pc, #56] ; (7fc ) + 7c4: 4798 blx r3 + break; + 7c6: e751 b.n 66c + 7c8: 2000006c .word 0x2000006c + 7cc: 00000301 .word 0x00000301 + 7d0: 00002021 .word 0x00002021 + 7d4: 000021a1 .word 0x000021a1 + 7d8: 00002221 .word 0x00002221 + 7dc: 00000445 .word 0x00000445 + 7e0: 0000047d .word 0x0000047d + 7e4: 00000302 .word 0x00000302 + 7e8: 2000016c .word 0x2000016c + 7ec: 8fffffff .word 0x8fffffff + 7f0: 200000ac .word 0x200000ac + 7f4: 2000012c .word 0x2000012c + 7f8: 20000000 .word 0x20000000 + 7fc: 000002ad .word 0x000002ad + 800: 000012c8 .word 0x000012c8 + AT91F_USB_SendData(pCdc, (char *) &line_coding, MIN(sizeof(usb_cdc_line_coding_t), wLength)); + 804: 2208 movs r2, #8 + 806: e7da b.n 7be + +00000808 : +{ + 808: b5f8 push {r3, r4, r5, r6, r7, lr} + 80a: 0004 movs r4, r0 + Usb *pUsb = pCdc->pUsb; + 80c: 6803 ldr r3, [r0, #0] + if (pUsb->DEVICE.INTFLAG.reg & USB_DEVICE_INTFLAG_EORST) { + 80e: 8b9a ldrh r2, [r3, #28] + 810: 0712 lsls r2, r2, #28 + 812: d407 bmi.n 824 + } else if (pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_RXSTP) { + 814: 2208 movs r2, #8 + 816: 32ff adds r2, #255 ; 0xff + 818: 5c9b ldrb r3, [r3, r2] + 81a: 06db lsls r3, r3, #27 + 81c: d535 bpl.n 88a + AT91F_CDC_Enumerate(pCdc); + 81e: 4b1c ldr r3, [pc, #112] ; (890 ) + 820: 4798 blx r3 + 822: e032 b.n 88a + pUsb->DEVICE.INTFLAG.reg |= USB_DEVICE_INTFLAG_EORST; + 824: 8b9a ldrh r2, [r3, #28] + 826: 2108 movs r1, #8 + 828: 430a orrs r2, r1 + 82a: b292 uxth r2, r2 + 82c: 839a strh r2, [r3, #28] + pUsb->DEVICE.DADD.reg = USB_DEVICE_DADD_ADDEN | 0; + 82e: 2280 movs r2, #128 ; 0x80 + 830: 729a strb r2, [r3, #10] + pUsb->DEVICE.DeviceEndpoint[0].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE0(1) | USB_DEVICE_EPCFG_EPTYPE1(1); + 832: 2011 movs r0, #17 + 834: 2180 movs r1, #128 ; 0x80 + 836: 0049 lsls r1, r1, #1 + 838: 5458 strb r0, [r3, r1] + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_BK0RDY; + 83a: 2640 movs r6, #64 ; 0x40 + 83c: 2106 movs r1, #6 + 83e: 31ff adds r1, #255 ; 0xff + 840: 545e strb r6, [r3, r1] + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK1RDY; + 842: 2582 movs r5, #130 ; 0x82 + 844: 006d lsls r5, r5, #1 + 846: 555a strb r2, [r3, r5] + usb_endpoint_table[0].DeviceDescBank[0].PCKSIZE.bit.SIZE = 3; + 848: 4a12 ldr r2, [pc, #72] ; (894 ) + 84a: 6857 ldr r7, [r2, #4] + 84c: 4912 ldr r1, [pc, #72] ; (898 ) + 84e: 468c mov ip, r1 + 850: 400f ands r7, r1 + 852: 21c0 movs r1, #192 ; 0xc0 + 854: 0589 lsls r1, r1, #22 + 856: 0038 movs r0, r7 + 858: 4308 orrs r0, r1 + 85a: 6050 str r0, [r2, #4] + usb_endpoint_table[0].DeviceDescBank[1].PCKSIZE.bit.SIZE = 3; + 85c: 6950 ldr r0, [r2, #20] + 85e: 4667 mov r7, ip + 860: 4038 ands r0, r7 + 862: 4301 orrs r1, r0 + 864: 6151 str r1, [r2, #20] + usb_endpoint_table[0].DeviceDescBank[0].ADDR.reg = (uint32_t)&udd_ep_out_cache_buffer[0]; + 866: 490d ldr r1, [pc, #52] ; (89c ) + 868: 6011 str r1, [r2, #0] + usb_endpoint_table[0].DeviceDescBank[1].ADDR.reg = (uint32_t)&udd_ep_in_cache_buffer[0]; + 86a: 490d ldr r1, [pc, #52] ; (8a0 ) + 86c: 6111 str r1, [r2, #16] + usb_endpoint_table[0].DeviceDescBank[0].PCKSIZE.bit.MULTI_PACKET_SIZE = 8; + 86e: 6850 ldr r0, [r2, #4] + 870: 490c ldr r1, [pc, #48] ; (8a4 ) + 872: 4008 ands r0, r1 + 874: 2180 movs r1, #128 ; 0x80 + 876: 0289 lsls r1, r1, #10 + 878: 4301 orrs r1, r0 + 87a: 6051 str r1, [r2, #4] + usb_endpoint_table[0].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT = 0; + 87c: 6851 ldr r1, [r2, #4] + 87e: 0b89 lsrs r1, r1, #14 + 880: 0388 lsls r0, r1, #14 + 882: 6050 str r0, [r2, #4] + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK0RDY; + 884: 555e strb r6, [r3, r5] + pCdc->currentConfiguration = 0; + 886: 2300 movs r3, #0 + 888: 7123 strb r3, [r4, #4] + return pCdc->currentConfiguration; + 88a: 7920 ldrb r0, [r4, #4] +} + 88c: bdf8 pop {r3, r4, r5, r6, r7, pc} + 88e: 46c0 nop ; (mov r8, r8) + 890: 00000495 .word 0x00000495 + 894: 2000016c .word 0x2000016c + 898: 8fffffff .word 0x8fffffff + 89c: 2000006c .word 0x2000006c + 8a0: 200000ec .word 0x200000ec + 8a4: f0003fff .word 0xf0003fff + +000008a8 : + + uart_basic_init(BOOT_USART_MODULE, USART_BAUD_REG_VAL_FOR_SAMBA, BOOT_USART_MUX_SETTINGS); +} + +void uart_basic_init(Sercom *sercom, uint16_t baud_val, uint32_t pad_conf) +{ + 8a8: b510 push {r4, lr} +} + +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); + 8aa: 69c3 ldr r3, [r0, #28] + 8ac: 079b lsls r3, r3, #30 + 8ae: d4fc bmi.n 8aa + /* Wait for synchronization */ + wait_for_usart_enable_sync(sercom); + /* Disable the SERCOM UART module */ + sercom->USART.CTRLA.bit.ENABLE = 0; + 8b0: 6804 ldr r4, [r0, #0] + 8b2: 2302 movs r3, #2 + 8b4: 439c bics r4, r3 + 8b6: 6004 str r4, [r0, #0] +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); + 8b8: 69c3 ldr r3, [r0, #28] + 8ba: 07db lsls r3, r3, #31 + 8bc: d4fc bmi.n 8b8 + /* Wait for synchronization */ + wait_for_usart_swrst_sync(sercom); + /* Perform a software reset */ + sercom->USART.CTRLA.bit.SWRST = 1; + 8be: 6804 ldr r4, [r0, #0] + 8c0: 2301 movs r3, #1 + 8c2: 4323 orrs r3, r4 + 8c4: 6003 str r3, [r0, #0] + 8c6: 69c3 ldr r3, [r0, #28] + 8c8: 07db lsls r3, r3, #31 + 8ca: d4fc bmi.n 8c6 +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); + 8cc: 69c3 ldr r3, [r0, #28] + 8ce: 07db lsls r3, r3, #31 + 8d0: d4fc bmi.n 8cc + 8d2: 69c3 ldr r3, [r0, #28] + 8d4: 079b lsls r3, r3, #30 + 8d6: d4f9 bmi.n 8cc + /* Wait for synchronization */ + wait_for_usart_swrst_sync(sercom); + /* Wait for synchronization */ + wait_for_usart_swrst_enable_sync(sercom); + /* Update the UART pad settings, mode and data order settings */ + sercom->USART.CTRLA.reg = pad_conf | SERCOM_USART_CTRLA_MODE(1) | SERCOM_USART_CTRLA_DORD | SERCOM_USART_CTRLA_RUNSTDBY; + 8d8: 4b08 ldr r3, [pc, #32] ; (8fc ) + 8da: 431a orrs r2, r3 + 8dc: 6002 str r2, [r0, #0] +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); + 8de: 69c3 ldr r3, [r0, #28] + 8e0: 075b lsls r3, r3, #29 + 8e2: d4fc bmi.n 8de + /* Wait for synchronization */ + wait_for_usart_ctrlb_sync(sercom); + /* Enable transmit and receive and set data size to 8 bits */ + sercom->USART.CTRLB.reg = SERCOM_USART_CTRLB_RXEN | SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_CHSIZE(0); + 8e4: 23c0 movs r3, #192 ; 0xc0 + 8e6: 029b lsls r3, r3, #10 + 8e8: 6043 str r3, [r0, #4] + /* Load the baud value */ + sercom->USART.BAUD.reg = baud_val; + 8ea: 8181 strh r1, [r0, #12] + while(sercom->USART.SYNCBUSY.bit.ENABLE); + 8ec: 69c3 ldr r3, [r0, #28] + 8ee: 079b lsls r3, r3, #30 + 8f0: d4fc bmi.n 8ec + /* Wait for synchronization */ + wait_for_usart_enable_sync(sercom); + /* Enable SERCOM UART */ + sercom->USART.CTRLA.bit.ENABLE = 1; + 8f2: 6802 ldr r2, [r0, #0] + 8f4: 2302 movs r3, #2 + 8f6: 4313 orrs r3, r2 + 8f8: 6003 str r3, [r0, #0] +} + 8fa: bd10 pop {r4, pc} + 8fc: 40000084 .word 0x40000084 + +00000900 : +{ + 900: b510 push {r4, lr} + 902: b086 sub sp, #24 + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + 904: 4a1f ldr r2, [pc, #124] ; (984 ) + 906: 2394 movs r3, #148 ; 0x94 + 908: 005b lsls r3, r3, #1 + 90a: 491f ldr r1, [pc, #124] ; (988 ) + 90c: 50d1 str r1, [r2, r3] + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + 90e: 481f ldr r0, [pc, #124] ; (98c ) + 910: 50d0 str r0, [r2, r3] + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + 912: 50d1 str r1, [r2, r3] + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + 914: 491e ldr r1, [pc, #120] ; (990 ) + 916: 50d1 str r1, [r2, r3] + Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; + 918: 481e ldr r0, [pc, #120] ; (994 ) + 91a: 466b mov r3, sp + 91c: 0002 movs r2, r0 + 91e: ca13 ldmia r2!, {r0, r1, r4} + 920: c313 stmia r3!, {r0, r1, r4} + 922: ca13 ldmia r2!, {r0, r1, r4} + 924: c313 stmia r3!, {r0, r1, r4} + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + 926: 2300 movs r3, #0 + 928: 2b05 cmp r3, #5 + 92a: d809 bhi.n 940 + if (BOOT_USART_MODULE == sercom_instances[i]) { + 92c: 009a lsls r2, r3, #2 + 92e: 4669 mov r1, sp + 930: 5851 ldr r1, [r2, r1] + 932: 4a19 ldr r2, [pc, #100] ; (998 ) + 934: 4291 cmp r1, r2 + 936: d001 beq.n 93c + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + 938: 3301 adds r3, #1 + 93a: e7f5 b.n 928 + inst = i; + 93c: b2db uxtb r3, r3 + 93e: e000 b.n 942 + uint8_t inst = 0; + 940: 2300 movs r3, #0 + MCLK->APBCMASK.reg |= (1u << (inst + MCLK_APBCMASK_SERCOM0_Pos)); + 942: 4816 ldr r0, [pc, #88] ; (99c ) + 944: 69c2 ldr r2, [r0, #28] + 946: 1c5c adds r4, r3, #1 + 948: 2101 movs r1, #1 + 94a: 40a1 lsls r1, r4 + 94c: 430a orrs r2, r1 + 94e: 61c2 str r2, [r0, #28] + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK0_Val); + 950: 0019 movs r1, r3 + 952: 3110 adds r1, #16 + 954: 4a12 ldr r2, [pc, #72] ; (9a0 ) + 956: 3330 adds r3, #48 ; 0x30 + 958: 009b lsls r3, r3, #2 + 95a: 2000 movs r0, #0 + 95c: 5098 str r0, [r3, r2] + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg |= GCLK_PCHCTRL_CHEN; + 95e: 5898 ldr r0, [r3, r2] + 960: 2440 movs r4, #64 ; 0x40 + 962: 4320 orrs r0, r4 + 964: 5098 str r0, [r3, r2] + while (!(GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg & GCLK_PCHCTRL_CHEN)); + 966: 000b movs r3, r1 + 968: 3320 adds r3, #32 + 96a: 009b lsls r3, r3, #2 + 96c: 4a0c ldr r2, [pc, #48] ; (9a0 ) + 96e: 589b ldr r3, [r3, r2] + 970: 065b lsls r3, r3, #25 + 972: d5f8 bpl.n 966 + uart_basic_init(BOOT_USART_MODULE, USART_BAUD_REG_VAL_FOR_SAMBA, BOOT_USART_MUX_SETTINGS); + 974: 22c4 movs r2, #196 ; 0xc4 + 976: 0392 lsls r2, r2, #14 + 978: 490a ldr r1, [pc, #40] ; (9a4 ) + 97a: 4807 ldr r0, [pc, #28] ; (998 ) + 97c: 4b0a ldr r3, [pc, #40] ; (9a8 ) + 97e: 4798 blx r3 +} + 980: b006 add sp, #24 + 982: bd10 pop {r4, pc} + 984: 41006000 .word 0x41006000 + 988: 53030000 .word 0x53030000 + 98c: d3030100 .word 0xd3030100 + 990: d3030200 .word 0xd3030200 + 994: 000012dc .word 0x000012dc + 998: 42001400 .word 0x42001400 + 99c: 40000800 .word 0x40000800 + 9a0: 40001c00 .word 0x40001c00 + 9a4: 0000c504 .word 0x0000c504 + 9a8: 000008a9 .word 0x000008a9 + +000009ac : +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); + 9ac: 69c3 ldr r3, [r0, #28] + 9ae: 2b00 cmp r3, #0 + 9b0: d1fc bne.n 9ac +void uart_write_byte(Sercom *sercom, uint8_t data) +{ + wait_for_uart_syncbusy_clear(sercom); + + /* Write the data to DATA register */ + sercom->USART.DATA.reg = (uint16_t)data; + 9b2: b289 uxth r1, r1 + 9b4: 8501 strh r1, [r0, #40] ; 0x28 + + while (!(sercom->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)); + 9b6: 7e03 ldrb r3, [r0, #24] + 9b8: 079b lsls r3, r3, #30 + 9ba: d5fc bpl.n 9b6 +} + 9bc: 4770 bx lr + +000009be : + 9be: 69c3 ldr r3, [r0, #28] + 9c0: 2b00 cmp r3, #0 + 9c2: d1fc bne.n 9be +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + 9c4: 8b43 ldrh r3, [r0, #26] + 9c6: b2db uxtb r3, r3 + 9c8: 2b00 cmp r3, #0 + 9ca: d003 beq.n 9d4 + { + sercom->USART.STATUS.reg &= 0xFFF8; + 9cc: 8b43 ldrh r3, [r0, #26] + 9ce: 2207 movs r2, #7 + 9d0: 4393 bics r3, r2 + 9d2: 8343 strh r3, [r0, #26] +{ + wait_for_uart_syncbusy_clear(sercom); + uart_read_clear_errors(sercom); + + /* Return the read data */ + return((uint8_t)sercom->USART.DATA.reg); + 9d4: 8d00 ldrh r0, [r0, #40] ; 0x28 + 9d6: b2c0 uxtb r0, r0 +} + 9d8: 4770 bx lr + ... + +000009dc : + *ptr++ = (uint8_t)sercom->USART.DATA.reg; + } while (length--); +} + +bool usart_is_rx_ready(void) { + return (BOOT_USART_MODULE->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC); + 9dc: 4b02 ldr r3, [pc, #8] ; (9e8 ) + 9de: 7e1b ldrb r3, [r3, #24] + 9e0: 089b lsrs r3, r3, #2 + 9e2: 2001 movs r0, #1 + 9e4: 4018 ands r0, r3 +} + 9e6: 4770 bx lr + 9e8: 42001400 .word 0x42001400 + +000009ec : +/** + * \brief Check the application startup condition + * + */ +static void check_start_application(void) +{ + 9ec: b510 push {r4, lr} + 9ee: b082 sub sp, #8 + uint32_t app_start_address; + + /* Load the Reset Handler address of the application */ + app_start_address = *(uint32_t *)(APP_START_ADDRESS + 4); + 9f0: 4b0e ldr r3, [pc, #56] ; (a2c ) + 9f2: 6818 ldr r0, [r3, #0] + /** + * Test reset vector of application @APP_START_ADDRESS+4 + * Stay in SAM-BA if *(APP_START+0x4) == 0xFFFFFFFF + * Application erased condition + */ + if (app_start_address == 0xFFFFFFFF) { + 9f4: 1c43 adds r3, r0, #1 + 9f6: d017 beq.n a28 + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + 9f8: 4a0d ldr r2, [pc, #52] ; (a30 ) + 9fa: 2302 movs r3, #2 + 9fc: 6053 str r3, [r2, #4] + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + 9fe: 2406 movs r4, #6 + a00: 2141 movs r1, #65 ; 0x41 + a02: 5454 strb r4, [r2, r1] + boot_port->OUTSET.reg = BOOT_PIN_MASK; + a04: 6193 str r3, [r2, #24] + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + a06: 6a11 ldr r1, [r2, #32] + a08: 4019 ands r1, r3 + a0a: 9101 str r1, [sp, #4] + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + a0c: 6a12 ldr r2, [r2, #32] + a0e: 4013 ands r3, r2 + a10: 9301 str r3, [sp, #4] + return(boot_en == 0); + a12: 9b01 ldr r3, [sp, #4] + /* Stay in Bootloader */ + return; + } + + if(b_is_bootloader_condition_enabled()) + a14: 2b00 cmp r3, #0 + a16: d007 beq.n a28 + return; + } + else + { + /* Re-base the Stack Pointer */ + __set_MSP(*(uint32_t *) APP_START_ADDRESS); + a18: 2380 movs r3, #128 ; 0x80 + a1a: 019b lsls r3, r3, #6 + a1c: 681a ldr r2, [r3, #0] + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__attribute__((always_inline)) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + a1e: f382 8808 msr MSP, r2 + + /* Re-base the vector table base address */ + SCB->VTOR = ((uint32_t) APP_START_ADDRESS & SCB_VTOR_TBLOFF_Msk); + a22: 4a04 ldr r2, [pc, #16] ; (a34 ) + a24: 6093 str r3, [r2, #8] + + /* Jump to application Reset Handler in the application */ + asm("bx %0"::"r"(app_start_address)); + a26: 4700 bx r0 + } +} + a28: b002 add sp, #8 + a2a: bd10 pop {r4, pc} + a2c: 00002004 .word 0x00002004 + a30: 41006100 .word 0x41006100 + a34: e000ed00 .word 0xe000ed00 + +00000a38
: +{ + a38: b510 push {r4, lr} + check_start_application(); + a3a: 4b10 ldr r3, [pc, #64] ; (a7c ) + a3c: 4798 blx r3 + NVMCTRL->CTRLB.bit.RWS = FLASH_WAIT_STATES; + a3e: 4910 ldr r1, [pc, #64] ; (a80 ) + a40: 684b ldr r3, [r1, #4] + a42: 221e movs r2, #30 + a44: 4393 bics r3, r2 + a46: 3a1c subs r2, #28 + a48: 4313 orrs r3, r2 + a4a: 604b str r3, [r1, #4] + OSCCTRL->OSC16MCTRL.bit.FSEL = 1; + a4c: 490d ldr r1, [pc, #52] ; (a84 ) + a4e: 7d0b ldrb r3, [r1, #20] + a50: 200c movs r0, #12 + a52: 4383 bics r3, r0 + a54: 2004 movs r0, #4 + a56: 4303 orrs r3, r0 + a58: 750b strb r3, [r1, #20] + PM->INTFLAG.reg = PM_INTFLAG_PLRDY; + a5a: 4b0b ldr r3, [pc, #44] ; (a88 ) + a5c: 2101 movs r1, #1 + a5e: 7199 strb r1, [r3, #6] + PM->PLCFG.reg = PM_PLCFG_PLSEL_PL2; + a60: 709a strb r2, [r3, #2] + while (!PM->INTFLAG.reg) { + a62: 4b09 ldr r3, [pc, #36] ; (a88 ) + a64: 799b ldrb r3, [r3, #6] + a66: 2b00 cmp r3, #0 + a68: d0fb beq.n a62 + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__attribute__((always_inline)) __STATIC_INLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); + a6a: f3bf 8f5f dmb sy + __ASM volatile ("cpsie i" : : : "memory"); + a6e: b662 cpsie i + init_sam_ba_monitor_interface(); + a70: 4b06 ldr r3, [pc, #24] ; (a8c ) + a72: 4798 blx r3 + process_sam_ba_monitor(); + a74: 4b06 ldr r3, [pc, #24] ; (a90 ) + a76: 4798 blx r3 + a78: e7fc b.n a74 + a7a: 46c0 nop ; (mov r8, r8) + a7c: 000009ed .word 0x000009ed + a80: 41004000 .word 0x41004000 + a84: 40001000 .word 0x40001000 + a88: 40000400 .word 0x40000400 + a8c: 00000aad .word 0x00000aad + a90: 00000e21 .word 0x00000e21 + +00000a94 : +volatile bool b_terminal_mode = false; +volatile uint32_t sp; + + +static void print_new_line(void) +{ + a94: b510 push {r4, lr} + ptr_monitor_if->putdata("\n\r", 2); + a96: 4b03 ldr r3, [pc, #12] ; (aa4 ) + a98: 681b ldr r3, [r3, #0] + a9a: 68db ldr r3, [r3, #12] + a9c: 2102 movs r1, #2 + a9e: 4802 ldr r0, [pc, #8] ; (aa8 ) + aa0: 4798 blx r3 +} + aa2: bd10 pop {r4, pc} + aa4: 20000200 .word 0x20000200 + aa8: 00001348 .word 0x00001348 + +00000aac : + +void init_sam_ba_monitor_interface(void) +{ + aac: b510 push {r4, lr} + #if SAM_BA_UART_INTERFACE_ENABLED + usart_open(); + aae: 4b28 ldr r3, [pc, #160] ; (b50 ) + ab0: 4798 blx r3 + OSC32KCTRL->XOSC32K.reg = OSC32KCTRL_XOSC32K_STARTUP(4) | OSC32KCTRL_XOSC32K_RUNSTDBY | OSC32KCTRL_XOSC32K_EN32K | OSC32KCTRL_XOSC32K_XTALEN | OSC32KCTRL_XOSC32K_ENABLE; + ab2: 4a28 ldr r2, [pc, #160] ; (b54 ) + ab4: 4b28 ldr r3, [pc, #160] ; (b58 ) + ab6: 829a strh r2, [r3, #20] + while(!(OSC32KCTRL->STATUS.reg & OSC32KCTRL_STATUS_XOSC32KRDY)); + ab8: 4b27 ldr r3, [pc, #156] ; (b58 ) + aba: 68db ldr r3, [r3, #12] + abc: 07db lsls r3, r3, #31 + abe: d5fb bpl.n ab8 + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK1_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_OSC32K_Val) | GCLK_GENCTRL_GENEN; + ac0: 2282 movs r2, #130 ; 0x82 + ac2: 0052 lsls r2, r2, #1 + ac4: 4b25 ldr r3, [pc, #148] ; (b5c ) + ac6: 625a str r2, [r3, #36] ; 0x24 + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); + ac8: 4b24 ldr r3, [pc, #144] ; (b5c ) + aca: 685b ldr r3, [r3, #4] + acc: 075b lsls r3, r3, #29 + ace: d4fb bmi.n ac8 + GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK1_Val) | GCLK_PCHCTRL_CHEN; + ad0: 2141 movs r1, #65 ; 0x41 + ad2: 2380 movs r3, #128 ; 0x80 + ad4: 4a21 ldr r2, [pc, #132] ; (b5c ) + ad6: 50d1 str r1, [r2, r3] + while (!(GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg & GCLK_PCHCTRL_CHEN)); + ad8: 2380 movs r3, #128 ; 0x80 + ada: 4a20 ldr r2, [pc, #128] ; (b5c ) + adc: 58d3 ldr r3, [r2, r3] + ade: 065b lsls r3, r3, #25 + ae0: d5fa bpl.n ad8 + uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP5) + (NVM_SW_CALIB_DFLL48M_COARSE_POS / 32)) + ae2: 4b1f ldr r3, [pc, #124] ; (b60 ) + ae4: 681a ldr r2, [r3, #0] + ae6: 0e92 lsrs r2, r2, #26 + if (coarse == 0x3f) { + ae8: 2a3f cmp r2, #63 ; 0x3f + aea: d02f beq.n b4c + OSCCTRL->DFLLCTRL.bit.ONDEMAND = false; + aec: 491d ldr r1, [pc, #116] ; (b64 ) + aee: 8b0b ldrh r3, [r1, #24] + af0: 2080 movs r0, #128 ; 0x80 + af2: 4383 bics r3, r0 + af4: 830b strh r3, [r1, #24] + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + af6: 4b1b ldr r3, [pc, #108] ; (b64 ) + af8: 68db ldr r3, [r3, #12] + afa: 05db lsls r3, r3, #23 + afc: d5fb bpl.n af6 + OSCCTRL->DFLLMUL.reg = OSCCTRL_DFLLMUL_MUL(48000000/32768) | OSCCTRL_DFLLMUL_FSTEP(0xFF/8) | OSCCTRL_DFLLMUL_CSTEP(0x1F/8); + afe: 4919 ldr r1, [pc, #100] ; (b64 ) + b00: 4b19 ldr r3, [pc, #100] ; (b68 ) + b02: 620b str r3, [r1, #32] + OSCCTRL->DFLLVAL.reg = OSCCTRL_DFLLVAL_FINE(512) | OSCCTRL_DFLLVAL_COARSE(coarse); + b04: 0292 lsls r2, r2, #10 + b06: 2380 movs r3, #128 ; 0x80 + b08: 009b lsls r3, r3, #2 + b0a: 431a orrs r2, r3 + b0c: 61ca str r2, [r1, #28] + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + b0e: 4b15 ldr r3, [pc, #84] ; (b64 ) + b10: 68db ldr r3, [r3, #12] + b12: 05db lsls r3, r3, #23 + b14: d5fb bpl.n b0e + OSCCTRL->DFLLCTRL.reg = OSCCTRL_DFLLCTRL_MODE | OSCCTRL_DFLLCTRL_ENABLE; + b16: 2206 movs r2, #6 + b18: 4b12 ldr r3, [pc, #72] ; (b64 ) + b1a: 831a strh r2, [r3, #24] + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + b1c: 4b11 ldr r3, [pc, #68] ; (b64 ) + b1e: 68db ldr r3, [r3, #12] + b20: 05db lsls r3, r3, #23 + b22: d5fb bpl.n b1c + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK3_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_OSC16M_Val) | GCLK_GENCTRL_GENEN; + b24: 2283 movs r2, #131 ; 0x83 + b26: 0052 lsls r2, r2, #1 + b28: 4b0c ldr r3, [pc, #48] ; (b5c ) + b2a: 62da str r2, [r3, #44] ; 0x2c + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK3_Val)); + b2c: 4b0b ldr r3, [pc, #44] ; (b5c ) + b2e: 685b ldr r3, [r3, #4] + b30: 220c movs r2, #12 + b32: 421a tst r2, r3 + b34: d1fa bne.n b2c + GCLK->PCHCTRL[USB_GCLK_ID].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK3_Val) | GCLK_PCHCTRL_CHEN; + b36: 2143 movs r1, #67 ; 0x43 + b38: 2398 movs r3, #152 ; 0x98 + b3a: 4a08 ldr r2, [pc, #32] ; (b5c ) + b3c: 50d1 str r1, [r2, r3] + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); + b3e: 4b07 ldr r3, [pc, #28] ; (b5c ) + b40: 685b ldr r3, [r3, #4] + b42: 075b lsls r3, r3, #29 + b44: d4fb bmi.n b3e + #endif + + #if SAM_BA_USB_INTERFACE_ENABLED + clock_configuration_for_usb(); + usb_init(); + b46: 4b09 ldr r3, [pc, #36] ; (b6c ) + b48: 4798 blx r3 + #endif +} + b4a: bd10 pop {r4, pc} + coarse = 0x1f; + b4c: 3a20 subs r2, #32 + b4e: e7cd b.n aec + b50: 00000901 .word 0x00000901 + b54: 0000044e .word 0x0000044e + b58: 40001400 .word 0x40001400 + b5c: 40001c00 .word 0x40001c00 + b60: 00806020 .word 0x00806020 + b64: 40001000 .word 0x40001000 + b68: 0c1f05b8 .word 0x0c1f05b8 + b6c: 0000117d .word 0x0000117d + +00000b70 : + * + * \param *data Data pointer + * \param length Length of the data + */ +void sam_ba_putdata_term(uint8_t* data, uint32_t length) +{ + b70: b570 push {r4, r5, r6, lr} + b72: b084 sub sp, #16 + uint8_t temp, buf[12], *data_ascii; + uint32_t i, int_value; + + if (b_terminal_mode) + b74: 4b1e ldr r3, [pc, #120] ; (bf0 ) + b76: 781b ldrb r3, [r3, #0] + b78: 2b00 cmp r3, #0 + b7a: d033 beq.n be4 + { + if (length == 4) + b7c: 2904 cmp r1, #4 + b7e: d00a beq.n b96 + int_value = *(uint32_t *) data; + else if (length == 2) + b80: 2902 cmp r1, #2 + b82: d00a beq.n b9a + int_value = *(uint16_t *) data; + else + int_value = *(uint8_t *) data; + b84: 7804 ldrb r4, [r0, #0] + + data_ascii = buf + 2; + data_ascii += length * 2 - 1; + b86: 004d lsls r5, r1, #1 + b88: 1e6a subs r2, r5, #1 + b8a: 2306 movs r3, #6 + b8c: 446b add r3, sp + b8e: 469c mov ip, r3 + b90: 4462 add r2, ip + + for (i = 0; i < length * 2; i++) + b92: 2000 movs r0, #0 + b94: e008 b.n ba8 + int_value = *(uint32_t *) data; + b96: 6804 ldr r4, [r0, #0] + b98: e7f5 b.n b86 + int_value = *(uint16_t *) data; + b9a: 8804 ldrh r4, [r0, #0] + b9c: e7f3 b.n b86 + temp = (uint8_t) (int_value & 0xf); + + if (temp <= 0x9) + *data_ascii = temp | 0x30; + else + *data_ascii = temp + 0x37; + b9e: 3337 adds r3, #55 ; 0x37 + ba0: 7013 strb r3, [r2, #0] + + int_value >>= 4; + ba2: 0924 lsrs r4, r4, #4 + data_ascii--; + ba4: 3a01 subs r2, #1 + for (i = 0; i < length * 2; i++) + ba6: 3001 adds r0, #1 + ba8: 42a8 cmp r0, r5 + baa: d207 bcs.n bbc + temp = (uint8_t) (int_value & 0xf); + bac: 230f movs r3, #15 + bae: 4023 ands r3, r4 + if (temp <= 0x9) + bb0: 2b09 cmp r3, #9 + bb2: d8f4 bhi.n b9e + *data_ascii = temp | 0x30; + bb4: 2630 movs r6, #48 ; 0x30 + bb6: 4333 orrs r3, r6 + bb8: 7013 strb r3, [r2, #0] + bba: e7f2 b.n ba2 + } + buf[0] = '0'; + bbc: a801 add r0, sp, #4 + bbe: 2330 movs r3, #48 ; 0x30 + bc0: 7003 strb r3, [r0, #0] + buf[1] = 'x'; + bc2: 3348 adds r3, #72 ; 0x48 + bc4: 7043 strb r3, [r0, #1] + buf[length * 2 + 2] = '\n'; + bc6: 1c4b adds r3, r1, #1 + bc8: 005b lsls r3, r3, #1 + bca: 220a movs r2, #10 + bcc: 54c2 strb r2, [r0, r3] + buf[length * 2 + 3] = '\r'; + bce: 3503 adds r5, #3 + bd0: 230d movs r3, #13 + bd2: 5543 strb r3, [r0, r5] + ptr_monitor_if->putdata(buf, length * 2 + 4); + bd4: 4b07 ldr r3, [pc, #28] ; (bf4 ) + bd6: 681b ldr r3, [r3, #0] + bd8: 68db ldr r3, [r3, #12] + bda: 3102 adds r1, #2 + bdc: 0049 lsls r1, r1, #1 + bde: 4798 blx r3 + } + else + ptr_monitor_if->putdata(data, length); + return; +} + be0: b004 add sp, #16 + be2: bd70 pop {r4, r5, r6, pc} + ptr_monitor_if->putdata(data, length); + be4: 4b03 ldr r3, [pc, #12] ; (bf4 ) + be6: 681b ldr r3, [r3, #0] + be8: 68db ldr r3, [r3, #12] + bea: 4798 blx r3 + return; + bec: e7f8 b.n be0 + bee: 46c0 nop ; (mov r8, r8) + bf0: 20000069 .word 0x20000069 + bf4: 20000200 .word 0x20000200 + +00000bf8 : + __ASM volatile ("cpsid i" : : : "memory"); + bf8: b672 cpsid i + __ASM volatile ("dmb 0xF":::"memory"); + bfa: f3bf 8f5f dmb sy + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + bfe: f3ef 8308 mrs r3, MSP +{ + uint32_t app_start_address; + + cpu_irq_disable(); + + sp = __get_MSP(); + c02: 4a06 ldr r2, [pc, #24] ; (c1c ) + c04: 6013 str r3, [r2, #0] + + /* Rebase the Stack Pointer */ + __set_MSP(*(uint32_t *) address); + c06: 6803 ldr r3, [r0, #0] + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + c08: f383 8808 msr MSP, r3 + + /* Rebase the vector table base address */ + SCB->VTOR = ((uint32_t) address & SCB_VTOR_TBLOFF_Msk); + c0c: 23ff movs r3, #255 ; 0xff + c0e: 0002 movs r2, r0 + c10: 439a bics r2, r3 + c12: 4b03 ldr r3, [pc, #12] ; (c20 ) + c14: 609a str r2, [r3, #8] + + /* Load the Reset Handler address of the application */ + app_start_address = *(uint32_t *)(address + 4); + c16: 6843 ldr r3, [r0, #4] + + /* Jump to application Reset Handler in the application */ + asm("bx %0"::"r"(app_start_address)); + c18: 4718 bx r3 +} + c1a: 4770 bx lr + c1c: 20000204 .word 0x20000204 + c20: e000ed00 .word 0xe000ed00 + +00000c24 : + +/** + * \brief This function starts the SAM-BA monitor. + */ +void sam_ba_monitor_run(void) +{ + c24: b5f0 push {r4, r5, r6, r7, lr} + c26: 46c6 mov lr, r8 + c28: b500 push {lr} + c2a: b092 sub sp, #72 ; 0x48 + uint32_t length; + uint32_t j, u8tmp, current_number, command; + uint8_t *ptr_data, *ptr, data[SIZEBUFMAX]; + + ptr_data = 0; + c2c: 2600 movs r6, #0 + command = 'z'; + c2e: 237a movs r3, #122 ; 0x7a + c30: 4698 mov r8, r3 + j=0; + + // Start waiting some cmd + while (1) + { + length = ptr_monitor_if->getdata(data, SIZEBUFMAX); + c32: 4b73 ldr r3, [pc, #460] ; (e00 ) + c34: 681b ldr r3, [r3, #0] + c36: 691b ldr r3, [r3, #16] + c38: 2140 movs r1, #64 ; 0x40 + c3a: a801 add r0, sp, #4 + c3c: 4798 blx r3 + c3e: 0007 movs r7, r0 + ptr = data; + for (uint32_t i = 0; i < length; i++) + c40: 2500 movs r5, #0 + ptr = data; + c42: ac01 add r4, sp, #4 + for (uint32_t i = 0; i < length; i++) + c44: e054 b.n cf0 + { + if (*ptr != 0xff) + { + if (*ptr == '#') + { + if (b_terminal_mode) + c46: 4b6f ldr r3, [pc, #444] ; (e04 ) + c48: 781b ldrb r3, [r3, #0] + c4a: 2b00 cmp r3, #0 + c4c: d12c bne.n ca8 + { + print_new_line(); + } + if (command == 'S') + c4e: 4643 mov r3, r8 + c50: 2b53 cmp r3, #83 ; 0x53 + c52: d02c beq.n cae + if(jgetdata_xmd(ptr_data, current_number-j); + + __asm("nop"); + } + else if (command == 'R') + c54: 4643 mov r3, r8 + c56: 2b52 cmp r3, #82 ; 0x52 + c58: d063 beq.n d22 + { + ptr_monitor_if->putdata_xmd(ptr_data, current_number); + } + else if (command == 'O') + c5a: 4643 mov r3, r8 + c5c: 2b4f cmp r3, #79 ; 0x4f + c5e: d067 beq.n d30 + { + *ptr_data = (char) current_number; + } + else if (command == 'H') + c60: 4643 mov r3, r8 + c62: 2b48 cmp r3, #72 ; 0x48 + c64: d06a beq.n d3c + { + *((uint16_t *) ptr_data) = (uint16_t) current_number; + } + else if (command == 'W') + c66: 4643 mov r3, r8 + c68: 2b57 cmp r3, #87 ; 0x57 + c6a: d06d beq.n d48 + { + *((int *) ptr_data) = current_number; + } + else if (command == 'o') + c6c: 4643 mov r3, r8 + c6e: 2b6f cmp r3, #111 ; 0x6f + c70: d06d beq.n d4e + { + sam_ba_putdata_term(ptr_data, 1); + } + else if (command == 'h') + c72: 4643 mov r3, r8 + c74: 2b68 cmp r3, #104 ; 0x68 + c76: d06f beq.n d58 + { + current_number = *((uint16_t *) ptr_data); + sam_ba_putdata_term((uint8_t*) ¤t_number, 2); + } + else if (command == 'w') + c78: 4643 mov r3, r8 + c7a: 2b77 cmp r3, #119 ; 0x77 + c7c: d073 beq.n d66 + { + current_number = *((uint32_t *) ptr_data); + sam_ba_putdata_term((uint8_t*) ¤t_number, 4); + } + else if (command == 'G') + c7e: 4643 mov r3, r8 + c80: 2b47 cmp r3, #71 ; 0x47 + c82: d077 beq.n d74 + //ptr_monitor_if->put_c(0x6); + /* Rebase the Stack Pointer */ + __set_MSP(sp); + cpu_irq_enable(); + } + else if (command == 'T') + c84: 4643 mov r3, r8 + c86: 2b54 cmp r3, #84 ; 0x54 + c88: d100 bne.n c8c + c8a: e07e b.n d8a + { + b_terminal_mode = 1; + print_new_line(); + } + else if (command == 'N') + c8c: 4643 mov r3, r8 + c8e: 2b4e cmp r3, #78 ; 0x4e + c90: d100 bne.n c94 + c92: e080 b.n d96 + { + print_new_line(); + } + b_terminal_mode = 0; + } + else if (command == 'V') + c94: 4643 mov r3, r8 + c96: 2b56 cmp r3, #86 ; 0x56 + c98: d120 bne.n cdc + { + ptr_monitor_if->putdata((uint8_t *) RomBOOT_Version, strlen(RomBOOT_Version)); + c9a: 4b59 ldr r3, [pc, #356] ; (e00 ) + c9c: 681b ldr r3, [r3, #0] + c9e: 68db ldr r3, [r3, #12] + ca0: 211b movs r1, #27 + ca2: 4859 ldr r0, [pc, #356] ; (e08 ) + ca4: 4798 blx r3 + ca6: e019 b.n cdc + print_new_line(); + ca8: 4b58 ldr r3, [pc, #352] ; (e0c ) + caa: 4798 blx r3 + cac: e7cf b.n c4e + ptr++; + cae: 3401 adds r4, #1 + i++; + cb0: 3501 adds r5, #1 + u8tmp=MIN((length-i),current_number); + cb2: 9a11 ldr r2, [sp, #68] ; 0x44 + cb4: 1b78 subs r0, r7, r5 + cb6: 4290 cmp r0, r2 + cb8: d900 bls.n cbc + cba: 0010 movs r0, r2 + for(j=0;j + *ptr_data = *ptr; + cc0: 7822 ldrb r2, [r4, #0] + cc2: 7032 strb r2, [r6, #0] + ptr_data++; + cc4: 3601 adds r6, #1 + ptr++; + cc6: 3401 adds r4, #1 + i++; + cc8: 3501 adds r5, #1 + for(j=0;j + i--; + cd0: 3d01 subs r5, #1 + ptr--; + cd2: 3c01 subs r4, #1 + if(j + __asm("nop"); + cda: 46c0 nop ; (mov r8, r8) + } + + command = 'z'; + current_number = 0; + cdc: 2300 movs r3, #0 + cde: 9311 str r3, [sp, #68] ; 0x44 + + if (b_terminal_mode) + ce0: 4b48 ldr r3, [pc, #288] ; (e04 ) + ce2: 781b ldrb r3, [r3, #0] + ce4: 2b00 cmp r3, #0 + ce6: d161 bne.n dac + command = 'z'; + ce8: 237a movs r3, #122 ; 0x7a + cea: 4698 mov r8, r3 + { + command = *ptr; + current_number = 0; + } + } + ptr++; + cec: 3401 adds r4, #1 + for (uint32_t i = 0; i < length; i++) + cee: 3501 adds r5, #1 + cf0: 42bd cmp r5, r7 + cf2: d29e bcs.n c32 + if (*ptr != 0xff) + cf4: 7823 ldrb r3, [r4, #0] + cf6: 2bff cmp r3, #255 ; 0xff + cf8: d0f9 beq.n cee + if (*ptr == '#') + cfa: 2b23 cmp r3, #35 ; 0x23 + cfc: d0a3 beq.n c46 + if (('0' <= *ptr) && (*ptr <= '9')) + cfe: 001a movs r2, r3 + d00: 3a30 subs r2, #48 ; 0x30 + d02: b2d2 uxtb r2, r2 + d04: 2a09 cmp r2, #9 + d06: d85a bhi.n dbe + current_number = (current_number << 4) | (*ptr - '0'); + d08: 9a11 ldr r2, [sp, #68] ; 0x44 + d0a: 0112 lsls r2, r2, #4 + d0c: 3b30 subs r3, #48 ; 0x30 + d0e: 4313 orrs r3, r2 + d10: 9311 str r3, [sp, #68] ; 0x44 + d12: e7eb b.n cec + ptr_monitor_if->getdata_xmd(ptr_data, current_number-j); + d14: 4a3a ldr r2, [pc, #232] ; (e00 ) + d16: 6812 ldr r2, [r2, #0] + d18: 6992 ldr r2, [r2, #24] + d1a: 1a59 subs r1, r3, r1 + d1c: 0030 movs r0, r6 + d1e: 4790 blx r2 + d20: e7db b.n cda + ptr_monitor_if->putdata_xmd(ptr_data, current_number); + d22: 4b37 ldr r3, [pc, #220] ; (e00 ) + d24: 681b ldr r3, [r3, #0] + d26: 695b ldr r3, [r3, #20] + d28: 9911 ldr r1, [sp, #68] ; 0x44 + d2a: 0030 movs r0, r6 + d2c: 4798 blx r3 + d2e: e7d5 b.n cdc + *ptr_data = (char) current_number; + d30: 466b mov r3, sp + d32: 2244 movs r2, #68 ; 0x44 + d34: 189b adds r3, r3, r2 + d36: 781b ldrb r3, [r3, #0] + d38: 7033 strb r3, [r6, #0] + d3a: e7cf b.n cdc + *((uint16_t *) ptr_data) = (uint16_t) current_number; + d3c: 466b mov r3, sp + d3e: 2244 movs r2, #68 ; 0x44 + d40: 189b adds r3, r3, r2 + d42: 881b ldrh r3, [r3, #0] + d44: 8033 strh r3, [r6, #0] + d46: e7c9 b.n cdc + *((int *) ptr_data) = current_number; + d48: 9b11 ldr r3, [sp, #68] ; 0x44 + d4a: 6033 str r3, [r6, #0] + d4c: e7c6 b.n cdc + sam_ba_putdata_term(ptr_data, 1); + d4e: 2101 movs r1, #1 + d50: 0030 movs r0, r6 + d52: 4b2f ldr r3, [pc, #188] ; (e10 ) + d54: 4798 blx r3 + d56: e7c1 b.n cdc + current_number = *((uint16_t *) ptr_data); + d58: 8833 ldrh r3, [r6, #0] + d5a: 9311 str r3, [sp, #68] ; 0x44 + sam_ba_putdata_term((uint8_t*) ¤t_number, 2); + d5c: 2102 movs r1, #2 + d5e: a811 add r0, sp, #68 ; 0x44 + d60: 4b2b ldr r3, [pc, #172] ; (e10 ) + d62: 4798 blx r3 + d64: e7ba b.n cdc + current_number = *((uint32_t *) ptr_data); + d66: 6833 ldr r3, [r6, #0] + d68: 9311 str r3, [sp, #68] ; 0x44 + sam_ba_putdata_term((uint8_t*) ¤t_number, 4); + d6a: 2104 movs r1, #4 + d6c: a811 add r0, sp, #68 ; 0x44 + d6e: 4b28 ldr r3, [pc, #160] ; (e10 ) + d70: 4798 blx r3 + d72: e7b3 b.n cdc + call_applet(current_number); + d74: 9811 ldr r0, [sp, #68] ; 0x44 + d76: 4b27 ldr r3, [pc, #156] ; (e14 ) + d78: 4798 blx r3 + __set_MSP(sp); + d7a: 4b27 ldr r3, [pc, #156] ; (e18 ) + d7c: 681b ldr r3, [r3, #0] + d7e: f383 8808 msr MSP, r3 + __ASM volatile ("dmb 0xF":::"memory"); + d82: f3bf 8f5f dmb sy + __ASM volatile ("cpsie i" : : : "memory"); + d86: b662 cpsie i + d88: e7a8 b.n cdc + b_terminal_mode = 1; + d8a: 2201 movs r2, #1 + d8c: 4b1d ldr r3, [pc, #116] ; (e04 ) + d8e: 701a strb r2, [r3, #0] + print_new_line(); + d90: 4b1e ldr r3, [pc, #120] ; (e0c ) + d92: 4798 blx r3 + d94: e7a2 b.n cdc + if (b_terminal_mode == 0) + d96: 4b1b ldr r3, [pc, #108] ; (e04 ) + d98: 781b ldrb r3, [r3, #0] + d9a: 2b00 cmp r3, #0 + d9c: d003 beq.n da6 + b_terminal_mode = 0; + d9e: 2200 movs r2, #0 + da0: 4b18 ldr r3, [pc, #96] ; (e04 ) + da2: 701a strb r2, [r3, #0] + da4: e79a b.n cdc + print_new_line(); + da6: 4b19 ldr r3, [pc, #100] ; (e0c ) + da8: 4798 blx r3 + daa: e7f8 b.n d9e + ptr_monitor_if->putdata(">", 1); + dac: 4b14 ldr r3, [pc, #80] ; (e00 ) + dae: 681b ldr r3, [r3, #0] + db0: 68db ldr r3, [r3, #12] + db2: 2101 movs r1, #1 + db4: 4819 ldr r0, [pc, #100] ; (e1c ) + db6: 4798 blx r3 + command = 'z'; + db8: 237a movs r3, #122 ; 0x7a + dba: 4698 mov r8, r3 + dbc: e796 b.n cec + else if (('A' <= *ptr) && (*ptr <= 'F')) + dbe: 001a movs r2, r3 + dc0: 3a41 subs r2, #65 ; 0x41 + dc2: b2d2 uxtb r2, r2 + dc4: 2a05 cmp r2, #5 + dc6: d805 bhi.n dd4 + current_number = (current_number << 4) | (*ptr - 'A' + 0xa); + dc8: 9a11 ldr r2, [sp, #68] ; 0x44 + dca: 0112 lsls r2, r2, #4 + dcc: 3b37 subs r3, #55 ; 0x37 + dce: 4313 orrs r3, r2 + dd0: 9311 str r3, [sp, #68] ; 0x44 + dd2: e78b b.n cec + else if (('a' <= *ptr) && (*ptr <= 'f')) + dd4: 001a movs r2, r3 + dd6: 3a61 subs r2, #97 ; 0x61 + dd8: b2d2 uxtb r2, r2 + dda: 2a05 cmp r2, #5 + ddc: d805 bhi.n dea + current_number = (current_number << 4) | (*ptr - 'a' + 0xa); + dde: 9a11 ldr r2, [sp, #68] ; 0x44 + de0: 0112 lsls r2, r2, #4 + de2: 3b57 subs r3, #87 ; 0x57 + de4: 4313 orrs r3, r2 + de6: 9311 str r3, [sp, #68] ; 0x44 + de8: e780 b.n cec + else if (*ptr == ',') + dea: 2b2c cmp r3, #44 ; 0x2c + dec: d003 beq.n df6 + command = *ptr; + dee: 4698 mov r8, r3 + current_number = 0; + df0: 2300 movs r3, #0 + df2: 9311 str r3, [sp, #68] ; 0x44 + df4: e77a b.n cec + ptr_data = (uint8_t *) current_number; + df6: 9e11 ldr r6, [sp, #68] ; 0x44 + current_number = 0; + df8: 2300 movs r3, #0 + dfa: 9311 str r3, [sp, #68] ; 0x44 + dfc: e776 b.n cec + dfe: 46c0 nop ; (mov r8, r8) + e00: 20000200 .word 0x20000200 + e04: 20000069 .word 0x20000069 + e08: 000012f4 .word 0x000012f4 + e0c: 00000a95 .word 0x00000a95 + e10: 00000b71 .word 0x00000b71 + e14: 00000bf9 .word 0x00000bf9 + e18: 20000204 .word 0x20000204 + e1c: 0000134c .word 0x0000134c + +00000e20 : +{ + e20: b510 push {r4, lr} + if (pCdc.IsConfigured(&pCdc) != 0) { + e22: 480d ldr r0, [pc, #52] ; (e58 ) + e24: 6883 ldr r3, [r0, #8] + e26: 4798 blx r3 + e28: 2800 cmp r0, #0 + e2a: d104 bne.n e36 + if(uart_if.is_rx_ready() && (SHARP_CHARACTER == uart_if.get_c())) { + e2c: 4b0b ldr r3, [pc, #44] ; (e5c ) + e2e: 4798 blx r3 + e30: 2800 cmp r0, #0 + e32: d106 bne.n e42 +} + e34: bd10 pop {r4, pc} + ptr_monitor_if = (t_monitor_if*) &usbcdc_if; + e36: 4b0a ldr r3, [pc, #40] ; (e60 ) + e38: 331c adds r3, #28 + e3a: 4a0a ldr r2, [pc, #40] ; (e64 ) + e3c: 6013 str r3, [r2, #0] + sam_ba_monitor_run(); + e3e: 4b0a ldr r3, [pc, #40] ; (e68 ) + e40: 4798 blx r3 + if(uart_if.is_rx_ready() && (SHARP_CHARACTER == uart_if.get_c())) { + e42: 4b0a ldr r3, [pc, #40] ; (e6c ) + e44: 4798 blx r3 + e46: 2823 cmp r0, #35 ; 0x23 + e48: d1f4 bne.n e34 + ptr_monitor_if = (t_monitor_if*) &uart_if; + e4a: 4b05 ldr r3, [pc, #20] ; (e60 ) + e4c: 3338 adds r3, #56 ; 0x38 + e4e: 4a05 ldr r2, [pc, #20] ; (e64 ) + e50: 6013 str r3, [r2, #0] + sam_ba_monitor_run(); + e52: 4b05 ldr r3, [pc, #20] ; (e68 ) + e54: 4798 blx r3 + e56: 46c0 nop ; (mov r8, r8) + e58: 200001ec .word 0x200001ec + e5c: 000009dd .word 0x000009dd + e60: 000012f4 .word 0x000012f4 + e64: 20000200 .word 0x20000200 + e68: 00000c25 .word 0x00000c25 + e6c: 00000e89 .word 0x00000e89 + +00000e70 : + * \param value Value to put + * + * \return \c 1 if function was successfully done, otherwise \c 0. + */ +int usart_putc(int value) +{ + e70: b510 push {r4, lr} + uart_write_byte(BOOT_USART_MODULE, (uint8_t)value); + e72: b2c1 uxtb r1, r0 + e74: 4802 ldr r0, [pc, #8] ; (e80 ) + e76: 4b03 ldr r3, [pc, #12] ; (e84 ) + e78: 4798 blx r3 + return 1; +} + e7a: 2001 movs r0, #1 + e7c: bd10 pop {r4, pc} + e7e: 46c0 nop ; (mov r8, r8) + e80: 42001400 .word 0x42001400 + e84: 000009ad .word 0x000009ad + +00000e88 : + + + +int usart_getc(void) { + e88: b510 push {r4, lr} + uint16_t retval; + //Wait until input buffer is filled + while(!(usart_is_rx_ready())); + e8a: 4b04 ldr r3, [pc, #16] ; (e9c ) + e8c: 4798 blx r3 + e8e: 2800 cmp r0, #0 + e90: d0fb beq.n e8a + retval = (uint16_t)uart_read_byte(BOOT_USART_MODULE); + e92: 4803 ldr r0, [pc, #12] ; (ea0 ) + e94: 4b03 ldr r3, [pc, #12] ; (ea4 ) + e96: 4798 blx r3 + //usart_read_wait(&usart_sam_ba, &retval); + return (int)retval; + +} + e98: bd10 pop {r4, pc} + e9a: 46c0 nop ; (mov r8, r8) + e9c: 000009dd .word 0x000009dd + ea0: 42001400 .word 0x42001400 + ea4: 000009bf .word 0x000009bf + +00000ea8 : + } + return (false); +} + +//Send given data (polling) +uint32_t usart_putdata(void const* data, uint32_t length) { + ea8: b570 push {r4, r5, r6, lr} + eaa: 000e movs r6, r1 + uint32_t i; + uint8_t* ptrdata; + ptrdata = (uint8_t*) data; + eac: 0005 movs r5, r0 + for (i = 0; i < length; i++) { + eae: 2400 movs r4, #0 + eb0: e004 b.n ebc + usart_putc(*ptrdata); + eb2: 7828 ldrb r0, [r5, #0] + eb4: 4b03 ldr r3, [pc, #12] ; (ec4 ) + eb6: 4798 blx r3 + ptrdata++; + eb8: 3501 adds r5, #1 + for (i = 0; i < length; i++) { + eba: 3401 adds r4, #1 + ebc: 42b4 cmp r4, r6 + ebe: d3f8 bcc.n eb2 + } + return (i); +} + ec0: 0020 movs r0, r4 + ec2: bd70 pop {r4, r5, r6, pc} + ec4: 00000e71 .word 0x00000e71 + +00000ec8 : + +//Get data from comm. device +uint32_t usart_getdata(void* data, uint32_t length) { + ec8: b510 push {r4, lr} + eca: 0004 movs r4, r0 + uint8_t* ptrdata; + ptrdata = (uint8_t*) data; + *ptrdata = usart_getc(); + ecc: 4b02 ldr r3, [pc, #8] ; (ed8 ) + ece: 4798 blx r3 + ed0: 7020 strb r0, [r4, #0] + return (1); +} + ed2: 2001 movs r0, #1 + ed4: bd10 pop {r4, pc} + ed6: 46c0 nop ; (mov r8, r8) + ed8: 00000e89 .word 0x00000e89 + +00000edc : +//*---------------------------------------------------------------------------- +unsigned short add_crc(char ptr, unsigned short crc) { + + unsigned short cmpt; + + crc = crc ^ (int) ptr << 8; + edc: 0200 lsls r0, r0, #8 + ede: 4048 eors r0, r1 + + for (cmpt = 0; cmpt < 8; cmpt++) { + ee0: 2300 movs r3, #0 + ee2: e005 b.n ef0 + if (crc & 0x8000) + crc = crc << 1 ^ CRC16POLY; + ee4: 0040 lsls r0, r0, #1 + ee6: 4907 ldr r1, [pc, #28] ; (f04 ) + ee8: 4048 eors r0, r1 + eea: b280 uxth r0, r0 + for (cmpt = 0; cmpt < 8; cmpt++) { + eec: 3301 adds r3, #1 + eee: b29b uxth r3, r3 + ef0: 2b07 cmp r3, #7 + ef2: d805 bhi.n f00 + if (crc & 0x8000) + ef4: b202 sxth r2, r0 + ef6: 2a00 cmp r2, #0 + ef8: dbf4 blt.n ee4 + else + crc = crc << 1; + efa: 0040 lsls r0, r0, #1 + efc: b280 uxth r0, r0 + efe: e7f5 b.n eec + } + + return (crc & 0xFFFF); +} + f00: 4770 bx lr + f02: 46c0 nop ; (mov r8, r8) + f04: 00001021 .word 0x00001021 + +00000f08 : + +//*---------------------------------------------------------------------------- +//* \fn getbytes +//* \brief +//*---------------------------------------------------------------------------- +static uint16_t getbytes(uint8_t *ptr_data, uint16_t length) { + f08: b5f0 push {r4, r5, r6, r7, lr} + f0a: b083 sub sp, #12 + f0c: 0007 movs r7, r0 + f0e: 000e movs r6, r1 + uint16_t crc = 0; + uint16_t cpt; + uint8_t c; + + for (cpt = 0; cpt < length; ++cpt) { + f10: 2400 movs r4, #0 + uint16_t crc = 0; + f12: 2300 movs r3, #0 + f14: 9301 str r3, [sp, #4] + for (cpt = 0; cpt < length; ++cpt) { + f16: e006 b.n f26 + c = usart_getc(); + crc = add_crc(c, crc); + //crc = (crc << 8) ^ xcrc16tab[(crc>>8) ^ c]; + if (size_of_data || mode_of_transfer) { + *ptr_data++ = c; + f18: 1c7b adds r3, r7, #1 + f1a: 703d strb r5, [r7, #0] + if (length == PKTLEN_128) + f1c: 2e80 cmp r6, #128 ; 0x80 + f1e: d015 beq.n f4c + *ptr_data++ = c; + f20: 001f movs r7, r3 + for (cpt = 0; cpt < length; ++cpt) { + f22: 3401 adds r4, #1 + f24: b2a4 uxth r4, r4 + f26: 42b4 cmp r4, r6 + f28: d216 bcs.n f58 + c = usart_getc(); + f2a: 4b0d ldr r3, [pc, #52] ; (f60 ) + f2c: 4798 blx r3 + f2e: b2c5 uxtb r5, r0 + crc = add_crc(c, crc); + f30: 9901 ldr r1, [sp, #4] + f32: 0028 movs r0, r5 + f34: 4b0b ldr r3, [pc, #44] ; (f64 ) + f36: 4798 blx r3 + f38: 9001 str r0, [sp, #4] + if (size_of_data || mode_of_transfer) { + f3a: 4b0b ldr r3, [pc, #44] ; (f68 ) + f3c: 881b ldrh r3, [r3, #0] + f3e: 2b00 cmp r3, #0 + f40: d1ea bne.n f18 + f42: 4b0a ldr r3, [pc, #40] ; (f6c ) + f44: 781b ldrb r3, [r3, #0] + f46: 2b00 cmp r3, #0 + f48: d0eb beq.n f22 + f4a: e7e5 b.n f18 + size_of_data--; + f4c: 4906 ldr r1, [pc, #24] ; (f68 ) + f4e: 880a ldrh r2, [r1, #0] + f50: 3a01 subs r2, #1 + f52: 800a strh r2, [r1, #0] + *ptr_data++ = c; + f54: 001f movs r7, r3 + f56: e7e4 b.n f22 + } + } + + return crc; +} + f58: 9801 ldr r0, [sp, #4] + f5a: b003 add sp, #12 + f5c: bdf0 pop {r4, r5, r6, r7, pc} + f5e: 46c0 nop ; (mov r8, r8) + f60: 00000e89 .word 0x00000e89 + f64: 00000edd .word 0x00000edd + f68: 20000208 .word 0x20000208 + f6c: 2000020a .word 0x2000020a + +00000f70 : + +//*---------------------------------------------------------------------------- +//* \fn putPacket +//* \brief Used by Xup to send packets. +//*---------------------------------------------------------------------------- +static int putPacket(uint8_t *tmppkt, uint8_t sno) { + f70: b5f8 push {r3, r4, r5, r6, r7, lr} + f72: 0007 movs r7, r0 + f74: 000c movs r4, r1 + uint16_t chksm; + uint8_t data; + + chksm = 0; + + usart_putc(SOH); + f76: 2001 movs r0, #1 + f78: 4d15 ldr r5, [pc, #84] ; (fd0 ) + f7a: 47a8 blx r5 + + usart_putc(sno); + f7c: 0020 movs r0, r4 + f7e: 47a8 blx r5 + usart_putc((uint8_t) ~(sno)); + f80: 43e0 mvns r0, r4 + f82: b2c0 uxtb r0, r0 + f84: 47a8 blx r5 + chksm = 0; + f86: 2400 movs r4, #0 + + for (i = 0; i < PKTLEN_128; i++) { + f88: 2600 movs r6, #0 + f8a: e00d b.n fa8 + if (size_of_data || mode_of_transfer) { + data = *tmppkt++; + f8c: 783d ldrb r5, [r7, #0] + size_of_data--; + f8e: 3b01 subs r3, #1 + f90: 4a10 ldr r2, [pc, #64] ; (fd4 ) + f92: 8013 strh r3, [r2, #0] + data = *tmppkt++; + f94: 3701 adds r7, #1 + } else + data = 0x00; + + usart_putc(data); + f96: 0028 movs r0, r5 + f98: 4b0d ldr r3, [pc, #52] ; (fd0 ) + f9a: 4798 blx r3 + + //chksm = (chksm<<8) ^ xcrc16tab[(chksm>>8)^data]; + chksm = add_crc(data, chksm); + f9c: 0021 movs r1, r4 + f9e: 0028 movs r0, r5 + fa0: 4b0d ldr r3, [pc, #52] ; (fd8 ) + fa2: 4798 blx r3 + fa4: 0004 movs r4, r0 + for (i = 0; i < PKTLEN_128; i++) { + fa6: 3601 adds r6, #1 + fa8: 2e7f cmp r6, #127 ; 0x7f + faa: d808 bhi.n fbe + if (size_of_data || mode_of_transfer) { + fac: 4b09 ldr r3, [pc, #36] ; (fd4 ) + fae: 881b ldrh r3, [r3, #0] + fb0: 2b00 cmp r3, #0 + fb2: d1eb bne.n f8c + fb4: 4a09 ldr r2, [pc, #36] ; (fdc ) + fb6: 7815 ldrb r5, [r2, #0] + fb8: 2d00 cmp r5, #0 + fba: d0ec beq.n f96 + fbc: e7e6 b.n f8c + } + + /* An "endian independent way to extract the CRC bytes. */ + usart_putc((uint8_t) (chksm >> 8)); + fbe: 0a20 lsrs r0, r4, #8 + fc0: b2c0 uxtb r0, r0 + fc2: 4d03 ldr r5, [pc, #12] ; (fd0 ) + fc4: 47a8 blx r5 + usart_putc((uint8_t) chksm); + fc6: b2e0 uxtb r0, r4 + fc8: 47a8 blx r5 + + return (usart_getc()); /* Wait for ack */ + fca: 4b05 ldr r3, [pc, #20] ; (fe0 ) + fcc: 4798 blx r3 +} + fce: bdf8 pop {r3, r4, r5, r6, r7, pc} + fd0: 00000e71 .word 0x00000e71 + fd4: 20000208 .word 0x20000208 + fd8: 00000edd .word 0x00000edd + fdc: 2000020a .word 0x2000020a + fe0: 00000e89 .word 0x00000e89 + +00000fe4 : + +//*---------------------------------------------------------------------------- +//* \fn getPacket +//* \brief Used by Xdown to retrieve packets. +//*---------------------------------------------------------------------------- +uint8_t getPacket(uint8_t *ptr_data, uint8_t sno) { + fe4: b5f0 push {r4, r5, r6, r7, lr} + fe6: b083 sub sp, #12 + fe8: 0006 movs r6, r0 + fea: 000d movs r5, r1 + uint8_t seq[2]; + uint16_t crc, xcrc; + + getbytes(seq, 2); + fec: 2102 movs r1, #2 + fee: a801 add r0, sp, #4 + ff0: 4c12 ldr r4, [pc, #72] ; (103c ) + ff2: 47a0 blx r4 + xcrc = getbytes(ptr_data, PKTLEN_128); + ff4: 2180 movs r1, #128 ; 0x80 + ff6: 0030 movs r0, r6 + ff8: 47a0 blx r4 + ffa: 0006 movs r6, r0 + + /* An "endian independent way to combine the CRC bytes. */ + crc = (uint16_t) usart_getc() << 8; + ffc: 4f10 ldr r7, [pc, #64] ; (1040 ) + ffe: 47b8 blx r7 + 1000: b280 uxth r0, r0 + 1002: 0200 lsls r0, r0, #8 + 1004: b284 uxth r4, r0 + crc += (uint16_t) usart_getc(); + 1006: 47b8 blx r7 + 1008: b280 uxth r0, r0 + 100a: 1824 adds r4, r4, r0 + 100c: b2a4 uxth r4, r4 + + if ((crc != xcrc) || (seq[0] != sno) || (seq[1] != (uint8_t) (~sno))) { + 100e: 42a6 cmp r6, r4 + 1010: d103 bne.n 101a + 1012: ab01 add r3, sp, #4 + 1014: 781b ldrb r3, [r3, #0] + 1016: 42ab cmp r3, r5 + 1018: d005 beq.n 1026 + usart_putc(CAN); + 101a: 2018 movs r0, #24 + 101c: 4b09 ldr r3, [pc, #36] ; (1044 ) + 101e: 4798 blx r3 + return (false); + 1020: 2000 movs r0, #0 + } + + usart_putc(ACK); + return (true); +} + 1022: b003 add sp, #12 + 1024: bdf0 pop {r4, r5, r6, r7, pc} + if ((crc != xcrc) || (seq[0] != sno) || (seq[1] != (uint8_t) (~sno))) { + 1026: ab01 add r3, sp, #4 + 1028: 785b ldrb r3, [r3, #1] + 102a: 43ed mvns r5, r5 + 102c: b2ed uxtb r5, r5 + 102e: 42ab cmp r3, r5 + 1030: d1f3 bne.n 101a + usart_putc(ACK); + 1032: 2006 movs r0, #6 + 1034: 4b03 ldr r3, [pc, #12] ; (1044 ) + 1036: 4798 blx r3 + return (true); + 1038: 2001 movs r0, #1 + 103a: e7f2 b.n 1022 + 103c: 00000f09 .word 0x00000f09 + 1040: 00000e89 .word 0x00000e89 + 1044: 00000e71 .word 0x00000e71 + +00001048 : +//* \brief Called when a transfer from target to host is being made (considered +//* an upload). +//*---------------------------------------------------------------------------- +//static void Xup(char *ptr_data, uint16_t length) +//Send given data (polling) using xmodem (if necessary) +uint32_t usart_putdata_xmd(void const* data, uint32_t length) { + 1048: b570 push {r4, r5, r6, lr} + 104a: 0005 movs r5, r0 + 104c: 1e0e subs r6, r1, #0 + uint8_t c, sno = 1; + uint8_t done; + uint8_t * ptr_data = (uint8_t *) data; + + if (!length) + 104e: d109 bne.n 1064 + mode_of_transfer = 1; + 1050: 2201 movs r2, #1 + 1052: 4b1c ldr r3, [pc, #112] ; (10c4 ) + 1054: 701a strb r2, [r3, #0] + else { + size_of_data = length; + mode_of_transfer = 0; + } + + if (length & (PKTLEN_128 - 1)) { + 1056: 0673 lsls r3, r6, #25 + 1058: d002 beq.n 1060 + length += PKTLEN_128; + 105a: 3680 adds r6, #128 ; 0x80 + length &= ~(PKTLEN_128 - 1); + 105c: 237f movs r3, #127 ; 0x7f + 105e: 439e bics r6, r3 + } + + /* Startup synchronization... */ + /* Wait to receive a NAK or 'C' from receiver. */ + done = 0; + 1060: 2400 movs r4, #0 + while (!done) { + 1062: e006 b.n 1072 + size_of_data = length; + 1064: 4b18 ldr r3, [pc, #96] ; (10c8 ) + 1066: 8019 strh r1, [r3, #0] + mode_of_transfer = 0; + 1068: 2200 movs r2, #0 + 106a: 4b16 ldr r3, [pc, #88] ; (10c4 ) + 106c: 701a strb r2, [r3, #0] + 106e: e7f2 b.n 1056 + c = (uint8_t) usart_getc(); + + switch (c) { + case NAK: + done = 1; + 1070: 2401 movs r4, #1 + while (!done) { + 1072: 2c00 cmp r4, #0 + 1074: d110 bne.n 1098 + c = (uint8_t) usart_getc(); + 1076: 4b15 ldr r3, [pc, #84] ; (10cc ) + 1078: 4798 blx r3 + switch (c) { + 107a: 23ff movs r3, #255 ; 0xff + 107c: 4018 ands r0, r3 + 107e: 2843 cmp r0, #67 ; 0x43 + 1080: d0f6 beq.n 1070 + 1082: 2871 cmp r0, #113 ; 0x71 + 1084: d01b beq.n 10be + 1086: 2815 cmp r0, #21 + 1088: d1f3 bne.n 1072 + 108a: e7f1 b.n 1070 + while (!done) { + c = (uint8_t) putPacket((uint8_t *) ptr_data, sno); + + switch (c) { + case ACK: + ++sno; + 108c: 3401 adds r4, #1 + 108e: b2e4 uxtb r4, r4 + length -= PKTLEN_128; + 1090: 3e80 subs r6, #128 ; 0x80 + ptr_data += PKTLEN_128; + 1092: 3580 adds r5, #128 ; 0x80 + case EOT: + default: + done = 0; + break; + } + if (!length) { + 1094: 2e00 cmp r6, #0 + 1096: d008 beq.n 10aa + c = (uint8_t) putPacket((uint8_t *) ptr_data, sno); + 1098: 0021 movs r1, r4 + 109a: 0028 movs r0, r5 + 109c: 4b0c ldr r3, [pc, #48] ; (10d0 ) + 109e: 4798 blx r3 + switch (c) { + 10a0: 23ff movs r3, #255 ; 0xff + 10a2: 4018 ands r0, r3 + 10a4: 2806 cmp r0, #6 + 10a6: d0f1 beq.n 108c + 10a8: e7f4 b.n 1094 + usart_putc(EOT); + 10aa: 2004 movs r0, #4 + 10ac: 4b09 ldr r3, [pc, #36] ; (10d4 ) + 10ae: 4798 blx r3 + usart_getc(); /* Flush the ACK */ + 10b0: 4b06 ldr r3, [pc, #24] ; (10cc ) + 10b2: 4798 blx r3 + break; + } + // ("!"); + } + + mode_of_transfer = 0; + 10b4: 2200 movs r2, #0 + 10b6: 4b03 ldr r3, [pc, #12] ; (10c4 ) + 10b8: 701a strb r2, [r3, #0] + // ("Xup_done."); + return (1); + 10ba: 2001 movs r0, #1 + 10bc: e000 b.n 10c0 + return (0); + 10be: 2000 movs r0, #0 + // return(0); +} + 10c0: bd70 pop {r4, r5, r6, pc} + 10c2: 46c0 nop ; (mov r8, r8) + 10c4: 2000020a .word 0x2000020a + 10c8: 20000208 .word 0x20000208 + 10cc: 00000e89 .word 0x00000e89 + 10d0: 00000f71 .word 0x00000f71 + 10d4: 00000e71 .word 0x00000e71 + +000010d8 : +//* \brief Called when a transfer from host to target is being made (considered +//* an download). +//*---------------------------------------------------------------------------- +//static void Xdown(char *ptr_data, uint16_t length) +//Get data from comm. device using xmodem (if necessary) +uint32_t usart_getdata_xmd(void* data, uint32_t length) { + 10d8: b570 push {r4, r5, r6, lr} + 10da: 0005 movs r5, r0 + uint32_t data_transfered = 0; + + //Copied from legacy source code ... might need some tweaking + uint32_t loops_per_second = CPU_FREQUENCY/10; /* system_clock_source_get_hz(BOOT_USART_GCLK_GEN_SOURCE) / 10; */ + + if (length == 0) + 10dc: 2900 cmp r1, #0 + 10de: d104 bne.n 10ea + mode_of_transfer = 1; + 10e0: 2201 movs r2, #1 + 10e2: 4b1f ldr r3, [pc, #124] ; (1160 ) + 10e4: 701a strb r2, [r3, #0] +uint32_t usart_getdata_xmd(void* data, uint32_t length) { + 10e6: 2664 movs r6, #100 ; 0x64 + 10e8: e011 b.n 110e + else { + size_of_data = length; + 10ea: 4b1e ldr r3, [pc, #120] ; (1164 ) + 10ec: 8019 strh r1, [r3, #0] + mode_of_transfer = 0; + 10ee: 2200 movs r2, #0 + 10f0: 4b1b ldr r3, [pc, #108] ; (1160 ) + 10f2: 701a strb r2, [r3, #0] + 10f4: e7f7 b.n 10e6 + // ("Xdown"); + while (1) { + usart_putc('C'); + timeout = loops_per_second; + while (!(usart_is_rx_ready()) && timeout) + timeout--; + 10f6: 3c01 subs r4, #1 + while (!(usart_is_rx_ready()) && timeout) + 10f8: 4b1b ldr r3, [pc, #108] ; (1168 ) + 10fa: 4798 blx r3 + 10fc: 2800 cmp r0, #0 + 10fe: d101 bne.n 1104 + 1100: 2c00 cmp r4, #0 + 1102: d1f8 bne.n 10f6 + if (timeout) + 1104: 2c00 cmp r4, #0 + 1106: d122 bne.n 114e + break; + + if (!(--nbr_of_timeout)) + 1108: 3e01 subs r6, #1 + 110a: 2e00 cmp r6, #0 + 110c: d025 beq.n 115a + usart_putc('C'); + 110e: 2043 movs r0, #67 ; 0x43 + 1110: 4b16 ldr r3, [pc, #88] ; (116c ) + 1112: 4798 blx r3 + timeout = loops_per_second; + 1114: 4c16 ldr r4, [pc, #88] ; (1170 ) + while (!(usart_is_rx_ready()) && timeout) + 1116: e7ef b.n 10f8 + c = (char) usart_getc(); + + switch (c) { + case SOH: /* 128-byte incoming packet */ + // ("O"); + b_run = getPacket(ptr_data, sno); + 1118: 0021 movs r1, r4 + 111a: 0028 movs r0, r5 + 111c: 4b15 ldr r3, [pc, #84] ; (1174 ) + 111e: 4798 blx r3 + 1120: 0002 movs r2, r0 + if (b_run == true) { + 1122: 2801 cmp r0, #1 + 1124: d00f beq.n 1146 + while (b_run != false) { + 1126: 2a00 cmp r2, #0 + 1128: d014 beq.n 1154 + c = (char) usart_getc(); + 112a: 4b13 ldr r3, [pc, #76] ; (1178 ) + 112c: 4798 blx r3 + b_run = false; + break; + case CAN: // ("C"); + case ESC: /* "X" User-invoked abort */ + default: + b_run = false; + 112e: 2200 movs r2, #0 + switch (c) { + 1130: 23ff movs r3, #255 ; 0xff + 1132: 4018 ands r0, r3 + 1134: 2801 cmp r0, #1 + 1136: d0ef beq.n 1118 + 1138: 2804 cmp r0, #4 + 113a: d1f4 bne.n 1126 + usart_putc(ACK); + 113c: 2006 movs r0, #6 + 113e: 4b0b ldr r3, [pc, #44] ; (116c ) + 1140: 4798 blx r3 + b_run = false; + 1142: 2200 movs r2, #0 + break; + 1144: e7ef b.n 1126 + ++sno; + 1146: 3401 adds r4, #1 + 1148: b2e4 uxtb r4, r4 + ptr_data += PKTLEN_128; + 114a: 3580 adds r5, #128 ; 0x80 + 114c: e7eb b.n 1126 + 114e: 2401 movs r4, #1 + 1150: 2201 movs r2, #1 + 1152: e7e8 b.n 1126 + break; + } + // ("!"); + } + mode_of_transfer = 0; + 1154: 4b02 ldr r3, [pc, #8] ; (1160 ) + 1156: 701a strb r2, [r3, #0] + return (true); + 1158: 2601 movs r6, #1 +// return(b_run); +} + 115a: 0030 movs r0, r6 + 115c: bd70 pop {r4, r5, r6, pc} + 115e: 46c0 nop ; (mov r8, r8) + 1160: 2000020a .word 0x2000020a + 1164: 20000208 .word 0x20000208 + 1168: 000009dd .word 0x000009dd + 116c: 00000e71 .word 0x00000e71 + 1170: 000c3500 .word 0x000c3500 + 1174: 00000fe5 .word 0x00000fe5 + 1178: 00000e89 .word 0x00000e89 + +0000117c : +#if SAM_BA_USB_INTERFACE_ENABLED + +extern USB_CDC pCdc; + +void usb_init(void) +{ + 117c: b510 push {r4, lr} + pCdc.pUsb = USB; + 117e: 4c05 ldr r4, [pc, #20] ; (1194 ) + 1180: 2382 movs r3, #130 ; 0x82 + 1182: 05db lsls r3, r3, #23 + 1184: 6023 str r3, [r4, #0] + /* Initialize USB */ + AT91F_InitUSB(); + 1186: 4b04 ldr r3, [pc, #16] ; (1198 ) + 1188: 4798 blx r3 + /* Get the default CDC structure settings */ + AT91F_CDC_Open((P_USB_CDC)&pCdc, pCdc.pUsb); + 118a: 6821 ldr r1, [r4, #0] + 118c: 0020 movs r0, r4 + 118e: 4b03 ldr r3, [pc, #12] ; (119c ) + 1190: 4798 blx r3 +} + 1192: bd10 pop {r4, pc} + 1194: 200001ec .word 0x200001ec + 1198: 000002bd .word 0x000002bd + 119c: 000003ad .word 0x000003ad + +000011a0 : + +int cdc_putc(int value) +{ + 11a0: b510 push {r4, lr} + 11a2: b082 sub sp, #8 + 11a4: 9001 str r0, [sp, #4] + /* Send single byte on USB CDC */ + USB_Write(&pCdc, (const char *)&value, 1, USB_EP_IN); + 11a6: 2301 movs r3, #1 + 11a8: 2201 movs r2, #1 + 11aa: a901 add r1, sp, #4 + 11ac: 4802 ldr r0, [pc, #8] ; (11b8 ) + 11ae: 4c03 ldr r4, [pc, #12] ; (11bc ) + 11b0: 47a0 blx r4 + return 1; +} + 11b2: 2001 movs r0, #1 + 11b4: b002 add sp, #8 + 11b6: bd10 pop {r4, pc} + 11b8: 200001ec .word 0x200001ec + 11bc: 00000205 .word 0x00000205 + +000011c0 : + +int cdc_getc(void) +{ + 11c0: b510 push {r4, lr} + 11c2: b082 sub sp, #8 + uint8_t rx_char; + /* Read singly byte on USB CDC */ + USB_Read(&pCdc, (char *)&rx_char, 1); + 11c4: 466b mov r3, sp + 11c6: 1ddc adds r4, r3, #7 + 11c8: 2201 movs r2, #1 + 11ca: 0021 movs r1, r4 + 11cc: 4802 ldr r0, [pc, #8] ; (11d8 ) + 11ce: 4b03 ldr r3, [pc, #12] ; (11dc ) + 11d0: 4798 blx r3 + return (int)rx_char; + 11d2: 7820 ldrb r0, [r4, #0] +} + 11d4: b002 add sp, #8 + 11d6: bd10 pop {r4, pc} + 11d8: 200001ec .word 0x200001ec + 11dc: 00000175 .word 0x00000175 + +000011e0 : + +bool cdc_is_rx_ready(void) +{ + 11e0: b510 push {r4, lr} + /* Check whether the device is configured */ + if ( !USB_IsConfigured(&pCdc)) + 11e2: 4808 ldr r0, [pc, #32] ; (1204 ) + 11e4: 4b08 ldr r3, [pc, #32] ; (1208 ) + 11e6: 4798 blx r3 + 11e8: 2800 cmp r0, #0 + 11ea: d008 beq.n 11fe + return 0; + + /* Return transfer complete 0 flag status */ + return (pCdc.pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT0); + 11ec: 4b05 ldr r3, [pc, #20] ; (1204 ) + 11ee: 681a ldr r2, [r3, #0] + 11f0: 2348 movs r3, #72 ; 0x48 + 11f2: 33ff adds r3, #255 ; 0xff + 11f4: 5cd0 ldrb r0, [r2, r3] + 11f6: 3b47 subs r3, #71 ; 0x47 + 11f8: 3bff subs r3, #255 ; 0xff + 11fa: 4018 ands r0, r3 +} + 11fc: bd10 pop {r4, pc} + return 0; + 11fe: 2000 movs r0, #0 + 1200: e7fc b.n 11fc + 1202: 46c0 nop ; (mov r8, r8) + 1204: 200001ec .word 0x200001ec + 1208: 00000809 .word 0x00000809 + +0000120c : + +uint32_t cdc_write_buf(void const* data, uint32_t length) +{ + 120c: b570 push {r4, r5, r6, lr} + 120e: 000c movs r4, r1 + /* Send the specified number of bytes on USB CDC */ + USB_Write(&pCdc, (const char *)data, length, USB_EP_IN); + 1210: 2301 movs r3, #1 + 1212: 000a movs r2, r1 + 1214: 0001 movs r1, r0 + 1216: 4802 ldr r0, [pc, #8] ; (1220 ) + 1218: 4d02 ldr r5, [pc, #8] ; (1224 ) + 121a: 47a8 blx r5 + return length; +} + 121c: 0020 movs r0, r4 + 121e: bd70 pop {r4, r5, r6, pc} + 1220: 200001ec .word 0x200001ec + 1224: 00000205 .word 0x00000205 + +00001228 : + +uint32_t cdc_read_buf(void* data, uint32_t length) +{ + 1228: b570 push {r4, r5, r6, lr} + 122a: 0004 movs r4, r0 + 122c: 000d movs r5, r1 + /* Check whether the device is configured */ + if ( !USB_IsConfigured(&pCdc)) + 122e: 4806 ldr r0, [pc, #24] ; (1248 ) + 1230: 4b06 ldr r3, [pc, #24] ; (124c ) + 1232: 4798 blx r3 + 1234: 2800 cmp r0, #0 + 1236: d101 bne.n 123c + return 0; + 1238: 2000 movs r0, #0 + + /* Read from USB CDC */ + return USB_Read(&pCdc, (char *)data, length); +} + 123a: bd70 pop {r4, r5, r6, pc} + return USB_Read(&pCdc, (char *)data, length); + 123c: 002a movs r2, r5 + 123e: 0021 movs r1, r4 + 1240: 4801 ldr r0, [pc, #4] ; (1248 ) + 1242: 4b03 ldr r3, [pc, #12] ; (1250 ) + 1244: 4798 blx r3 + 1246: e7f8 b.n 123a + 1248: 200001ec .word 0x200001ec + 124c: 00000809 .word 0x00000809 + 1250: 00000175 .word 0x00000175 + +00001254 : + +uint32_t cdc_read_buf_xmd(void* data, uint32_t length) +{ + 1254: b570 push {r4, r5, r6, lr} + 1256: 0004 movs r4, r0 + 1258: 000d movs r5, r1 + /* Check whether the device is configured */ + if ( !USB_IsConfigured(&pCdc)) + 125a: 4806 ldr r0, [pc, #24] ; (1274 ) + 125c: 4b06 ldr r3, [pc, #24] ; (1278 ) + 125e: 4798 blx r3 + 1260: 2800 cmp r0, #0 + 1262: d101 bne.n 1268 + return 0; + 1264: 2000 movs r0, #0 + + /* Blocking read till specified number of bytes is received */ + return USB_Read_blocking(&pCdc, (char *)data, length); +} + 1266: bd70 pop {r4, r5, r6, pc} + return USB_Read_blocking(&pCdc, (char *)data, length); + 1268: 002a movs r2, r5 + 126a: 0021 movs r1, r4 + 126c: 4801 ldr r0, [pc, #4] ; (1274 ) + 126e: 4b03 ldr r3, [pc, #12] ; (127c ) + 1270: 4798 blx r3 + 1272: e7f8 b.n 1266 + 1274: 200001ec .word 0x200001ec + 1278: 00000809 .word 0x00000809 + 127c: 000003d9 .word 0x000003d9 + +00001280 <__libc_init_array>: + 1280: b570 push {r4, r5, r6, lr} + 1282: 2600 movs r6, #0 + 1284: 4d0c ldr r5, [pc, #48] ; (12b8 <__libc_init_array+0x38>) + 1286: 4c0d ldr r4, [pc, #52] ; (12bc <__libc_init_array+0x3c>) + 1288: 1b64 subs r4, r4, r5 + 128a: 10a4 asrs r4, r4, #2 + 128c: 42a6 cmp r6, r4 + 128e: d109 bne.n 12a4 <__libc_init_array+0x24> + 1290: 2600 movs r6, #0 + 1292: f000 f85d bl 1350 <_init> + 1296: 4d0a ldr r5, [pc, #40] ; (12c0 <__libc_init_array+0x40>) + 1298: 4c0a ldr r4, [pc, #40] ; (12c4 <__libc_init_array+0x44>) + 129a: 1b64 subs r4, r4, r5 + 129c: 10a4 asrs r4, r4, #2 + 129e: 42a6 cmp r6, r4 + 12a0: d105 bne.n 12ae <__libc_init_array+0x2e> + 12a2: bd70 pop {r4, r5, r6, pc} + 12a4: 00b3 lsls r3, r6, #2 + 12a6: 58eb ldr r3, [r5, r3] + 12a8: 4798 blx r3 + 12aa: 3601 adds r6, #1 + 12ac: e7ee b.n 128c <__libc_init_array+0xc> + 12ae: 00b3 lsls r3, r6, #2 + 12b0: 58eb ldr r3, [r5, r3] + 12b2: 4798 blx r3 + 12b4: 3601 adds r6, #1 + 12b6: e7f2 b.n 129e <__libc_init_array+0x1e> + 12b8: 0000135c .word 0x0000135c + 12bc: 0000135c .word 0x0000135c + 12c0: 0000135c .word 0x0000135c + 12c4: 00001360 .word 0x00001360 + +000012c8 : + 12c8: 01100112 40000002 612403eb 00000110 .......@..$a.... + 12d8: 00000100 42000400 42000800 42000c00 .......B...B...B + 12e8: 42001000 42001400 42001800 ...B...B...B + +000012f4 : + 12f4: 312e3276 63654438 20393120 37313032 v2.18Dec 19 2017 + 1304: 3a353120 343a3832 000d0a33 15:28:43... + +00001310 : + 1310: 000011a1 000011c1 000011e1 0000120d ................ + 1320: 00001229 0000120d 00001255 ).......U... + +0000132c : + 132c: 00000e71 00000e89 000009dd 00000ea9 q............... + 133c: 00000ec9 00001049 000010d9 00000d0a ....I........... + 134c: 0000003e >... + +00001350 <_init>: + 1350: b5f8 push {r3, r4, r5, r6, r7, lr} + 1352: 46c0 nop ; (mov r8, r8) + 1354: bcf8 pop {r3, r4, r5, r6, r7} + 1356: bc08 pop {r3} + 1358: 469e mov lr, r3 + 135a: 4770 bx lr + +0000135c <__init_array_start>: + 135c: 000000d1 .word 0x000000d1 + +00001360 <_fini>: + 1360: b5f8 push {r3, r4, r5, r6, r7, lr} + 1362: 46c0 nop ; (mov r8, r8) + 1364: bcf8 pop {r3, r4, r5, r6, r7} + 1366: bc08 pop {r3} + 1368: 469e mov lr, r3 + 136a: 4770 bx lr + +0000136c <__fini_array_start>: + 136c: 000000a9 .word 0x000000a9 diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.map b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.map new file mode 100644 index 0000000..27751f3 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.map @@ -0,0 +1,2066 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (__libc_init_array) +c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (memset) + +Allocating common symbols +Common symbol size file + +udd_ep_out_cache_buffer + 0x80 drivers/cdc_enumerate.o +udd_ep_in_cache_buffer + 0x80 drivers/cdc_enumerate.o +size_of_data 0x2 sam_ba/usart_sam_ba.o +usb_endpoint_table 0x80 drivers/cdc_enumerate.o +pCdc 0x14 drivers/cdc_enumerate.o +mode_of_transfer 0x1 sam_ba/usart_sam_ba.o +ptr_monitor_if 0x4 sam_ba/sam_ba_monitor.o +sp 0x4 sam_ba/sam_ba_monitor.o + +Discarded input sections + + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + .data 0x00000000 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + .text 0x00000000 0x78 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o + .ARM.extab 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o + .ARM.exidx 0x00000000 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o + .ARM.attributes + 0x00000000 0x1b c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/startup_saml22.o + .text 0x00000000 0x0 Device_Startup/startup_saml22.o + .data 0x00000000 0x0 Device_Startup/startup_saml22.o + .bss 0x00000000 0x0 Device_Startup/startup_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .group 0x00000000 0x8 Device_Startup/system_saml22.o + .text 0x00000000 0x0 Device_Startup/system_saml22.o + .data 0x00000000 0x4 Device_Startup/system_saml22.o + .bss 0x00000000 0x0 Device_Startup/system_saml22.o + .text.SystemInit + 0x00000000 0x10 Device_Startup/system_saml22.o + .text.SystemCoreClockUpdate + 0x00000000 0x10 Device_Startup/system_saml22.o + .debug_info 0x00000000 0xd5 Device_Startup/system_saml22.o + .debug_abbrev 0x00000000 0x72 Device_Startup/system_saml22.o + .debug_aranges + 0x00000000 0x28 Device_Startup/system_saml22.o + .debug_ranges 0x00000000 0x18 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x357 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x898 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x22 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x87 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x51 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xef Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x6a Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x1df Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x40 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x28 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x85 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x49b Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x713 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x958 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x279 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x21d Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xe12 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x5b6 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x5be Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x623 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x279 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x466 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x21c Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x767 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x7bf Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x28d Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x5f3 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x1c6 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x307 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xac Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x1c53 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xff4 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xd40 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x874 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x9bf Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x8ad Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x19bd Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xe7 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xb7c Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x369 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x7c Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xac Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xca Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x4c Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xdc Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xb2 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x64 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x452 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x4c Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x148 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x5e Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xa0 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xc4 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xb2 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x4c Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x64 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x40 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x1d9 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x22 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x15d Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x172 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x11e Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x5e Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x167 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xfa Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xfa Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xfa Device_Startup/system_saml22.o + .debug_macro 0x00000000 0xfa Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x124 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x2e Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x1f9 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x3a Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x41e Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x30e9 Device_Startup/system_saml22.o + .debug_macro 0x00000000 0x6d Device_Startup/system_saml22.o + .debug_line 0x00000000 0x70d Device_Startup/system_saml22.o + .debug_str 0x00000000 0x83973 Device_Startup/system_saml22.o + .comment 0x00000000 0x5a Device_Startup/system_saml22.o + .debug_frame 0x00000000 0x30 Device_Startup/system_saml22.o + .ARM.attributes + 0x00000000 0x32 Device_Startup/system_saml22.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/cdc_enumerate.o + .text 0x00000000 0x0 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x898 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x22 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x87 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x51 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xef drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x6a drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x1df drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x28 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x85 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x49b drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x713 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x958 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x279 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x21d drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xe12 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x5b6 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x5be drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x623 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x279 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x466 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x21c drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x767 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x7bf drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x28d drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x5f3 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x1c6 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x307 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xac drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x1c53 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xff4 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xd40 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x874 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x9bf drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x8ad drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x19bd drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xe7 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xb7c drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x369 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x7c drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xac drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xca drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x4c drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xdc drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xb2 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x64 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x452 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x4c drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x148 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x5e drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xa0 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xc4 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xb2 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x4c drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x64 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x40 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x1d9 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x22 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x15d drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x172 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x11e drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x5e drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x167 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xfa drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xfa drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xfa drivers/cdc_enumerate.o + .debug_macro 0x00000000 0xfa drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x124 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x2e drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x1f9 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x3a drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x41e drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x30e9 drivers/cdc_enumerate.o + .debug_macro 0x00000000 0x6d drivers/cdc_enumerate.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .group 0x00000000 0x8 drivers/uart_driver.o + .text 0x00000000 0x0 drivers/uart_driver.o + .data 0x00000000 0x0 drivers/uart_driver.o + .bss 0x00000000 0x0 drivers/uart_driver.o + .text.uart_disable + 0x00000000 0x10 drivers/uart_driver.o + .text.uart_write_buffer_polled + 0x00000000 0x1e drivers/uart_driver.o + .text.uart_read_buffer_polled + 0x00000000 0x30 drivers/uart_driver.o + .debug_macro 0x00000000 0x898 drivers/uart_driver.o + .debug_macro 0x00000000 0x22 drivers/uart_driver.o + .debug_macro 0x00000000 0x87 drivers/uart_driver.o + .debug_macro 0x00000000 0x51 drivers/uart_driver.o + .debug_macro 0x00000000 0xef drivers/uart_driver.o + .debug_macro 0x00000000 0x6a drivers/uart_driver.o + .debug_macro 0x00000000 0x1df drivers/uart_driver.o + .debug_macro 0x00000000 0x22 drivers/uart_driver.o + .debug_macro 0x00000000 0x52 drivers/uart_driver.o + .debug_macro 0x00000000 0x35 drivers/uart_driver.o + .debug_macro 0x00000000 0x9c drivers/uart_driver.o + .debug_macro 0x00000000 0x16d drivers/uart_driver.o + .debug_macro 0x00000000 0x52 drivers/uart_driver.o + .debug_macro 0x00000000 0x1f drivers/uart_driver.o + .debug_macro 0x00000000 0x43 drivers/uart_driver.o + .debug_macro 0x00000000 0x20 drivers/uart_driver.o + .debug_macro 0x00000000 0x187 drivers/uart_driver.o + .debug_macro 0x00000000 0x330 drivers/uart_driver.o + .debug_macro 0x00000000 0x10 drivers/uart_driver.o + .debug_macro 0x00000000 0x35 drivers/uart_driver.o + .debug_macro 0x00000000 0x1c drivers/uart_driver.o + .debug_macro 0x00000000 0x46 drivers/uart_driver.o + .debug_macro 0x00000000 0x28 drivers/uart_driver.o + .debug_macro 0x00000000 0x85 drivers/uart_driver.o + .debug_macro 0x00000000 0x49b drivers/uart_driver.o + .debug_macro 0x00000000 0x713 drivers/uart_driver.o + .debug_macro 0x00000000 0x958 drivers/uart_driver.o + .debug_macro 0x00000000 0x279 drivers/uart_driver.o + .debug_macro 0x00000000 0x21d drivers/uart_driver.o + .debug_macro 0x00000000 0xe12 drivers/uart_driver.o + .debug_macro 0x00000000 0x5b6 drivers/uart_driver.o + .debug_macro 0x00000000 0x5be drivers/uart_driver.o + .debug_macro 0x00000000 0x623 drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x279 drivers/uart_driver.o + .debug_macro 0x00000000 0x466 drivers/uart_driver.o + .debug_macro 0x00000000 0x21c drivers/uart_driver.o + .debug_macro 0x00000000 0x767 drivers/uart_driver.o + .debug_macro 0x00000000 0x7bf drivers/uart_driver.o + .debug_macro 0x00000000 0x28d drivers/uart_driver.o + .debug_macro 0x00000000 0x5f3 drivers/uart_driver.o + .debug_macro 0x00000000 0x1c6 drivers/uart_driver.o + .debug_macro 0x00000000 0x307 drivers/uart_driver.o + .debug_macro 0x00000000 0xac drivers/uart_driver.o + .debug_macro 0x00000000 0x1c53 drivers/uart_driver.o + .debug_macro 0x00000000 0xff4 drivers/uart_driver.o + .debug_macro 0x00000000 0xd40 drivers/uart_driver.o + .debug_macro 0x00000000 0x874 drivers/uart_driver.o + .debug_macro 0x00000000 0x9bf drivers/uart_driver.o + .debug_macro 0x00000000 0x8ad drivers/uart_driver.o + .debug_macro 0x00000000 0x19bd drivers/uart_driver.o + .debug_macro 0x00000000 0xe7 drivers/uart_driver.o + .debug_macro 0x00000000 0xb7c drivers/uart_driver.o + .debug_macro 0x00000000 0x369 drivers/uart_driver.o + .debug_macro 0x00000000 0x7c drivers/uart_driver.o + .debug_macro 0x00000000 0xac drivers/uart_driver.o + .debug_macro 0x00000000 0xca drivers/uart_driver.o + .debug_macro 0x00000000 0x4c drivers/uart_driver.o + .debug_macro 0x00000000 0xdc drivers/uart_driver.o + .debug_macro 0x00000000 0xb2 drivers/uart_driver.o + .debug_macro 0x00000000 0x64 drivers/uart_driver.o + .debug_macro 0x00000000 0x452 drivers/uart_driver.o + .debug_macro 0x00000000 0x4c drivers/uart_driver.o + .debug_macro 0x00000000 0x148 drivers/uart_driver.o + .debug_macro 0x00000000 0x5e drivers/uart_driver.o + .debug_macro 0x00000000 0xa0 drivers/uart_driver.o + .debug_macro 0x00000000 0xc4 drivers/uart_driver.o + .debug_macro 0x00000000 0xb2 drivers/uart_driver.o + .debug_macro 0x00000000 0x4c drivers/uart_driver.o + .debug_macro 0x00000000 0x64 drivers/uart_driver.o + .debug_macro 0x00000000 0x40 drivers/uart_driver.o + .debug_macro 0x00000000 0x1d9 drivers/uart_driver.o + .debug_macro 0x00000000 0x22 drivers/uart_driver.o + .debug_macro 0x00000000 0x15d drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x172 drivers/uart_driver.o + .debug_macro 0x00000000 0x11e drivers/uart_driver.o + .debug_macro 0x00000000 0x5e drivers/uart_driver.o + .debug_macro 0x00000000 0x167 drivers/uart_driver.o + .debug_macro 0x00000000 0xfa drivers/uart_driver.o + .debug_macro 0x00000000 0xfa drivers/uart_driver.o + .debug_macro 0x00000000 0xfa drivers/uart_driver.o + .debug_macro 0x00000000 0xfa drivers/uart_driver.o + .debug_macro 0x00000000 0x124 drivers/uart_driver.o + .debug_macro 0x00000000 0x2e drivers/uart_driver.o + .debug_macro 0x00000000 0x1f9 drivers/uart_driver.o + .debug_macro 0x00000000 0x3a drivers/uart_driver.o + .debug_macro 0x00000000 0x41e drivers/uart_driver.o + .debug_macro 0x00000000 0x30e9 drivers/uart_driver.o + .debug_macro 0x00000000 0x6d drivers/uart_driver.o + .debug_macro 0x00000000 0x94 drivers/uart_driver.o + .debug_macro 0x00000000 0x34 drivers/uart_driver.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .group 0x00000000 0x8 main.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .debug_macro 0x00000000 0x898 main.o + .debug_macro 0x00000000 0x22 main.o + .debug_macro 0x00000000 0x87 main.o + .debug_macro 0x00000000 0x51 main.o + .debug_macro 0x00000000 0xef main.o + .debug_macro 0x00000000 0x6a main.o + .debug_macro 0x00000000 0x1df main.o + .debug_macro 0x00000000 0x22 main.o + .debug_macro 0x00000000 0x52 main.o + .debug_macro 0x00000000 0x35 main.o + .debug_macro 0x00000000 0x9c main.o + .debug_macro 0x00000000 0x16d main.o + .debug_macro 0x00000000 0x52 main.o + .debug_macro 0x00000000 0x1f main.o + .debug_macro 0x00000000 0x43 main.o + .debug_macro 0x00000000 0x20 main.o + .debug_macro 0x00000000 0x187 main.o + .debug_macro 0x00000000 0x330 main.o + .debug_macro 0x00000000 0x10 main.o + .debug_macro 0x00000000 0x35 main.o + .debug_macro 0x00000000 0x1c main.o + .debug_macro 0x00000000 0x46 main.o + .debug_macro 0x00000000 0x28 main.o + .debug_macro 0x00000000 0x85 main.o + .debug_macro 0x00000000 0x49b main.o + .debug_macro 0x00000000 0x713 main.o + .debug_macro 0x00000000 0x958 main.o + .debug_macro 0x00000000 0x279 main.o + .debug_macro 0x00000000 0x21d main.o + .debug_macro 0x00000000 0xe12 main.o + .debug_macro 0x00000000 0x5b6 main.o + .debug_macro 0x00000000 0x5be main.o + .debug_macro 0x00000000 0x623 main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x279 main.o + .debug_macro 0x00000000 0x466 main.o + .debug_macro 0x00000000 0x21c main.o + .debug_macro 0x00000000 0x767 main.o + .debug_macro 0x00000000 0x7bf main.o + .debug_macro 0x00000000 0x28d main.o + .debug_macro 0x00000000 0x5f3 main.o + .debug_macro 0x00000000 0x1c6 main.o + .debug_macro 0x00000000 0x307 main.o + .debug_macro 0x00000000 0xac main.o + .debug_macro 0x00000000 0x1c53 main.o + .debug_macro 0x00000000 0xff4 main.o + .debug_macro 0x00000000 0xd40 main.o + .debug_macro 0x00000000 0x874 main.o + .debug_macro 0x00000000 0x9bf main.o + .debug_macro 0x00000000 0x8ad main.o + .debug_macro 0x00000000 0x19bd main.o + .debug_macro 0x00000000 0xe7 main.o + .debug_macro 0x00000000 0xb7c main.o + .debug_macro 0x00000000 0x369 main.o + .debug_macro 0x00000000 0x7c main.o + .debug_macro 0x00000000 0xac main.o + .debug_macro 0x00000000 0xca main.o + .debug_macro 0x00000000 0x4c main.o + .debug_macro 0x00000000 0xdc main.o + .debug_macro 0x00000000 0xb2 main.o + .debug_macro 0x00000000 0x64 main.o + .debug_macro 0x00000000 0x452 main.o + .debug_macro 0x00000000 0x4c main.o + .debug_macro 0x00000000 0x148 main.o + .debug_macro 0x00000000 0x5e main.o + .debug_macro 0x00000000 0xa0 main.o + .debug_macro 0x00000000 0xc4 main.o + .debug_macro 0x00000000 0xb2 main.o + .debug_macro 0x00000000 0x4c main.o + .debug_macro 0x00000000 0x64 main.o + .debug_macro 0x00000000 0x40 main.o + .debug_macro 0x00000000 0x1d9 main.o + .debug_macro 0x00000000 0x22 main.o + .debug_macro 0x00000000 0x15d main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x172 main.o + .debug_macro 0x00000000 0x11e main.o + .debug_macro 0x00000000 0x5e main.o + .debug_macro 0x00000000 0x167 main.o + .debug_macro 0x00000000 0xfa main.o + .debug_macro 0x00000000 0xfa main.o + .debug_macro 0x00000000 0xfa main.o + .debug_macro 0x00000000 0xfa main.o + .debug_macro 0x00000000 0x124 main.o + .debug_macro 0x00000000 0x2e main.o + .debug_macro 0x00000000 0x1f9 main.o + .debug_macro 0x00000000 0x3a main.o + .debug_macro 0x00000000 0x41e main.o + .debug_macro 0x00000000 0x30e9 main.o + .debug_macro 0x00000000 0x6d main.o + .debug_macro 0x00000000 0x94 main.o + .debug_macro 0x00000000 0x34 main.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/sam_ba_monitor.o + .text 0x00000000 0x0 sam_ba/sam_ba_monitor.o + .data 0x00000000 0x0 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x898 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x22 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x87 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x51 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xef sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x6a sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1df sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x22 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x52 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x35 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x9c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x16d sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x52 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1f sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x43 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x20 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x187 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x330 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x10 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x35 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x46 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x28 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x85 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x49b sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x713 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x958 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x279 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x21d sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xe12 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x5b6 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x5be sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x623 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x279 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x466 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x21c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x767 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x7bf sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x28d sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x5f3 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1c6 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x307 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xac sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1c53 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xff4 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xd40 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x874 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x9bf sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x8ad sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x19bd sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xe7 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xb7c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x369 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x7c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xac sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xca sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x4c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xdc sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xb2 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x64 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x452 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x4c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x148 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x5e sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xa0 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xc4 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xb2 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x4c sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x64 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x40 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1d9 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x22 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x15d sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x172 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x11e sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x5e sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x167 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xfa sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xfa sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xfa sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0xfa sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x124 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x2e sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x1f9 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x3a sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x41e sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x30e9 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x6d sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x94 sam_ba/sam_ba_monitor.o + .debug_macro 0x00000000 0x34 sam_ba/sam_ba_monitor.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usart_sam_ba.o + .text 0x00000000 0x0 sam_ba/usart_sam_ba.o + .data 0x00000000 0x0 sam_ba/usart_sam_ba.o + .bss 0x00000000 0x0 sam_ba/usart_sam_ba.o + .text.usart_close + 0x00000000 0x14 sam_ba/usart_sam_ba.o + .text.usart_sharp_received + 0x00000000 0x28 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x898 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x22 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x87 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x51 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xef sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x6a sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1df sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x22 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x52 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x35 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x9c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x16d sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x52 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1f sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x43 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x20 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x187 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x330 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x10 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x35 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x46 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x28 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x85 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x49b sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x713 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x958 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x279 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x21d sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xe12 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x5b6 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x5be sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x623 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x279 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x466 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x21c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x767 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x7bf sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x28d sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x5f3 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1c6 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x307 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xac sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1c53 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xff4 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xd40 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x874 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x9bf sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x8ad sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x19bd sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xe7 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xb7c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x369 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x7c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xac sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xca sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x4c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xdc sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xb2 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x64 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x452 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x4c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x148 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x5e sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xa0 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xc4 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xb2 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x4c sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x64 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x40 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1d9 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x22 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x15d sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x11e sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x5e sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x167 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x124 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x2e sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x1f9 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x3a sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x41e sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x30e9 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x6d sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x94 sam_ba/usart_sam_ba.o + .debug_macro 0x00000000 0x34 sam_ba/usart_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .group 0x00000000 0x8 sam_ba/usb_sam_ba.o + .text 0x00000000 0x0 sam_ba/usb_sam_ba.o + .data 0x00000000 0x0 sam_ba/usb_sam_ba.o + .bss 0x00000000 0x0 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x898 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x22 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x87 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x51 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xef sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x6a sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1df sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x22 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x52 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x35 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x9c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x16d sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x52 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1f sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x43 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x20 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x187 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x330 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x10 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x35 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x46 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x28 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x85 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x49b sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x713 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x958 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x279 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x21d sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xe12 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x5b6 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x5be sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x623 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x279 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x466 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x21c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x767 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x7bf sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x28d sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x5f3 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1c6 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x307 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xac sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1c53 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xff4 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xd40 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x874 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x9bf sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x8ad sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x19bd sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xe7 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xb7c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x369 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x7c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xac sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xca sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x4c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xdc sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xb2 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x64 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x452 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x4c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x148 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x5e sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xa0 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xc4 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xb2 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x4c sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x64 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x40 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1d9 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x22 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x15d sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x172 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x11e sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x5e sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x167 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0xfa sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x124 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x2e sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x1f9 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x3a sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x41e sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x30e9 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x6d sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x94 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x34 sam_ba/usb_sam_ba.o + .debug_macro 0x00000000 0x28 sam_ba/usb_sam_ba.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + .text.exit 0x00000000 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + .debug_frame 0x00000000 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .data._impure_ptr + 0x00000000 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .data.impure_data + 0x00000000 0x60 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .rodata._global_impure_ptr + 0x00000000 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-impure.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + .text.memset 0x00000000 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + .debug_frame 0x00000000 0x20 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-memset.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o + .eh_frame 0x00000000 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o + .jcr 0x00000000 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + +Memory Configuration + +Name Origin Length Attributes +rom 0x00000000 0x00040000 xr +ram 0x20000000 0x00008000 xrw +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o +LOAD Device_Startup/startup_saml22.o +LOAD Device_Startup/system_saml22.o +LOAD drivers/cdc_enumerate.o +LOAD drivers/uart_driver.o +LOAD main.o +LOAD sam_ba/sam_ba_monitor.o +LOAD sam_ba/usart_sam_ba.o +LOAD sam_ba/usb_sam_ba.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libm.a +END GROUP + 0x00000280 STACK_SIZE = 0x280 +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a +END GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + 0x00002000 STACK_SIZE = DEFINED (STACK_SIZE)?STACK_SIZE:DEFINED (__stack_size__)?__stack_size__:0x2000 + +.text 0x00000000 0x1370 + 0x00000000 . = ALIGN (0x4) + 0x00000000 _sfixed = . + *(.vectors .vectors.*) + .vectors 0x00000000 0xa8 Device_Startup/startup_saml22.o + 0x00000000 exception_table + *(.text .text.* .gnu.linkonce.t.*) + .text 0x000000a8 0x60 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + .text.Dummy_Handler + 0x00000108 0x2 Device_Startup/startup_saml22.o + 0x00000108 DMAC_Handler + 0x00000108 TRNG_Handler + 0x00000108 HardFault_Handler + 0x00000108 TC2_Handler + 0x00000108 AC_Handler + 0x00000108 SysTick_Handler + 0x00000108 PendSV_Handler + 0x00000108 NMI_Handler + 0x00000108 SERCOM1_Handler + 0x00000108 ADC_Handler + 0x00000108 SERCOM2_Handler + 0x00000108 TCC0_Handler + 0x00000108 RTC_Handler + 0x00000108 EIC_Handler + 0x00000108 WDT_Handler + 0x00000108 TC1_Handler + 0x00000108 USB_Handler + 0x00000108 TC3_Handler + 0x00000108 Dummy_Handler + 0x00000108 SERCOM5_Handler + 0x00000108 SVC_Handler + 0x00000108 EVSYS_Handler + 0x00000108 SERCOM3_Handler + 0x00000108 SERCOM4_Handler + 0x00000108 NVMCTRL_Handler + 0x00000108 SYSTEM_Handler + 0x00000108 SERCOM0_Handler + 0x00000108 PTC_Handler + 0x00000108 FREQM_Handler + 0x00000108 TC0_Handler + 0x00000108 SLCD_Handler + 0x00000108 AES_Handler + *fill* 0x0000010a 0x2 + .text.Reset_Handler + 0x0000010c 0x68 Device_Startup/startup_saml22.o + 0x0000010c Reset_Handler + .text.USB_Read + 0x00000174 0x90 drivers/cdc_enumerate.o + 0x00000174 USB_Read + .text.USB_Write + 0x00000204 0xa8 drivers/cdc_enumerate.o + 0x00000204 USB_Write + .text.AT91F_USB_SendData + 0x000002ac 0x10 drivers/cdc_enumerate.o + .text.AT91F_InitUSB + 0x000002bc 0xf0 drivers/cdc_enumerate.o + 0x000002bc AT91F_InitUSB + .text.AT91F_CDC_Open + 0x000003ac 0x2c drivers/cdc_enumerate.o + 0x000003ac AT91F_CDC_Open + .text.USB_Read_blocking + 0x000003d8 0x6c drivers/cdc_enumerate.o + 0x000003d8 USB_Read_blocking + .text.AT91F_USB_SendZlp + 0x00000444 0x38 drivers/cdc_enumerate.o + 0x00000444 AT91F_USB_SendZlp + .text.AT91F_USB_SendStall + 0x0000047c 0x18 drivers/cdc_enumerate.o + 0x0000047c AT91F_USB_SendStall + .text.AT91F_CDC_Enumerate + 0x00000494 0x374 drivers/cdc_enumerate.o + .text.USB_IsConfigured + 0x00000808 0xa0 drivers/cdc_enumerate.o + 0x00000808 USB_IsConfigured + .text.uart_basic_init + 0x000008a8 0x58 drivers/uart_driver.o + 0x000008a8 uart_basic_init + .text.usart_open + 0x00000900 0xac drivers/uart_driver.o + 0x00000900 usart_open + .text.uart_write_byte + 0x000009ac 0x12 drivers/uart_driver.o + 0x000009ac uart_write_byte + .text.uart_read_byte + 0x000009be 0x1c drivers/uart_driver.o + 0x000009be uart_read_byte + *fill* 0x000009da 0x2 + .text.usart_is_rx_ready + 0x000009dc 0x10 drivers/uart_driver.o + 0x000009dc usart_is_rx_ready + .text.check_start_application + 0x000009ec 0x4c main.o + .text.main 0x00000a38 0x5c main.o + 0x00000a38 main + .text.print_new_line + 0x00000a94 0x18 sam_ba/sam_ba_monitor.o + .text.init_sam_ba_monitor_interface + 0x00000aac 0xc4 sam_ba/sam_ba_monitor.o + 0x00000aac init_sam_ba_monitor_interface + .text.sam_ba_putdata_term + 0x00000b70 0x88 sam_ba/sam_ba_monitor.o + 0x00000b70 sam_ba_putdata_term + .text.call_applet + 0x00000bf8 0x2c sam_ba/sam_ba_monitor.o + 0x00000bf8 call_applet + .text.sam_ba_monitor_run + 0x00000c24 0x1fc sam_ba/sam_ba_monitor.o + 0x00000c24 sam_ba_monitor_run + .text.process_sam_ba_monitor + 0x00000e20 0x50 sam_ba/sam_ba_monitor.o + 0x00000e20 process_sam_ba_monitor + .text.usart_putc + 0x00000e70 0x18 sam_ba/usart_sam_ba.o + 0x00000e70 usart_putc + .text.usart_getc + 0x00000e88 0x20 sam_ba/usart_sam_ba.o + 0x00000e88 usart_getc + .text.usart_putdata + 0x00000ea8 0x20 sam_ba/usart_sam_ba.o + 0x00000ea8 usart_putdata + .text.usart_getdata + 0x00000ec8 0x14 sam_ba/usart_sam_ba.o + 0x00000ec8 usart_getdata + .text.add_crc 0x00000edc 0x2c sam_ba/usart_sam_ba.o + 0x00000edc add_crc + .text.getbytes + 0x00000f08 0x68 sam_ba/usart_sam_ba.o + .text.putPacket + 0x00000f70 0x74 sam_ba/usart_sam_ba.o + .text.getPacket + 0x00000fe4 0x64 sam_ba/usart_sam_ba.o + 0x00000fe4 getPacket + .text.usart_putdata_xmd + 0x00001048 0x90 sam_ba/usart_sam_ba.o + 0x00001048 usart_putdata_xmd + .text.usart_getdata_xmd + 0x000010d8 0xa4 sam_ba/usart_sam_ba.o + 0x000010d8 usart_getdata_xmd + .text.usb_init + 0x0000117c 0x24 sam_ba/usb_sam_ba.o + 0x0000117c usb_init + .text.cdc_putc + 0x000011a0 0x20 sam_ba/usb_sam_ba.o + 0x000011a0 cdc_putc + .text.cdc_getc + 0x000011c0 0x20 sam_ba/usb_sam_ba.o + 0x000011c0 cdc_getc + .text.cdc_is_rx_ready + 0x000011e0 0x2c sam_ba/usb_sam_ba.o + 0x000011e0 cdc_is_rx_ready + .text.cdc_write_buf + 0x0000120c 0x1c sam_ba/usb_sam_ba.o + 0x0000120c cdc_write_buf + .text.cdc_read_buf + 0x00001228 0x2c sam_ba/usb_sam_ba.o + 0x00001228 cdc_read_buf + .text.cdc_read_buf_xmd + 0x00001254 0x2c sam_ba/usb_sam_ba.o + 0x00001254 cdc_read_buf_xmd + .text.__libc_init_array + 0x00001280 0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) + 0x00001280 __libc_init_array + *(.glue_7t) + .glue_7t 0x000012c8 0x0 linker stubs + *(.glue_7) + .glue_7 0x000012c8 0x0 linker stubs + *(.rodata .rodata* .gnu.linkonce.r.*) + .rodata 0x000012c8 0x12 drivers/cdc_enumerate.o + 0x000012c8 devDescriptor + *fill* 0x000012da 0x2 + .rodata 0x000012dc 0x18 drivers/uart_driver.o + .rodata 0x000012f4 0x54 sam_ba/sam_ba_monitor.o + 0x000012f4 RomBOOT_Version + 0x00001310 usbcdc_if + 0x0000132c uart_if + .rodata.str1.4 + 0x00001348 0x8 sam_ba/sam_ba_monitor.o + 0x6 (size before relaxing) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x00001350 . = ALIGN (0x4) + *(.init) + .init 0x00001350 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x00001350 _init + .init 0x00001354 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + 0x0000135c . = ALIGN (0x4) + 0x0000135c __preinit_array_start = . + *(.preinit_array) + 0x0000135c __preinit_array_end = . + 0x0000135c . = ALIGN (0x4) + 0x0000135c __init_array_start = . + *(SORT(.init_array.*)) + *(.init_array) + .init_array 0x0000135c 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + 0x00001360 __init_array_end = . + 0x00001360 . = ALIGN (0x4) + *crtbegin.o(.ctors) + *(EXCLUDE_FILE(*crtend.o) .ctors) + *(SORT(.ctors.*)) + *crtend.o(.ctors) + 0x00001360 . = ALIGN (0x4) + *(.fini) + .fini 0x00001360 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x00001360 _fini + .fini 0x00001364 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + 0x0000136c . = ALIGN (0x4) + 0x0000136c __fini_array_start = . + *(.fini_array) + .fini_array 0x0000136c 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + *(SORT(.fini_array.*)) + 0x00001370 __fini_array_end = . + *crtbegin.o(.dtors) + *(EXCLUDE_FILE(*crtend.o) .dtors) + *(SORT(.dtors.*)) + *crtend.o(.dtors) + 0x00001370 . = ALIGN (0x4) + 0x00001370 _efixed = . + [!provide] PROVIDE (__exidx_start, .) + +.vfp11_veneer 0x00001370 0x0 + .vfp11_veneer 0x00001370 0x0 linker stubs + +.v4_bx 0x00001370 0x0 + .v4_bx 0x00001370 0x0 linker stubs + +.iplt 0x00001370 0x0 + .iplt 0x00001370 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + +.eh_frame 0x00001370 0x0 + .eh_frame 0x00001370 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + +.rel.dyn 0x00001370 0x0 + .rel.iplt 0x00001370 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + +.jcr 0x00001370 0x0 + .jcr 0x00001370 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + +.igot.plt 0x00001370 0x0 + .igot.plt 0x00001370 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + +.ARM.exidx + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + [!provide] PROVIDE (__exidx_end, .) + 0x00001370 . = ALIGN (0x4) + 0x00001370 _etext = . + +.relocate 0x20000000 0x4c load address 0x00001370 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _srelocate = . + *(.ramfunc .ramfunc.*) + *(.data .data.*) + .data 0x20000000 0x4c drivers/cdc_enumerate.o + 0x20000000 cfgDescriptor + 0x2000004c . = ALIGN (0x4) + 0x2000004c _erelocate = . + +.bss 0x2000004c 0x1c0 load address 0x000013bc + 0x2000004c . = ALIGN (0x4) + 0x2000004c _sbss = . + 0x2000004c _szero = . + *(.bss .bss.*) + .bss 0x2000004c 0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + .bss 0x20000068 0x1 drivers/cdc_enumerate.o + .bss 0x20000069 0x1 sam_ba/sam_ba_monitor.o + 0x20000069 b_terminal_mode + *(COMMON) + *fill* 0x2000006a 0x2 + COMMON 0x2000006c 0x194 drivers/cdc_enumerate.o + 0x2000006c udd_ep_out_cache_buffer + 0x200000ec udd_ep_in_cache_buffer + 0x2000016c usb_endpoint_table + 0x200001ec pCdc + COMMON 0x20000200 0x8 sam_ba/sam_ba_monitor.o + 0x20000200 ptr_monitor_if + 0x20000204 sp + COMMON 0x20000208 0x3 sam_ba/usart_sam_ba.o + 0x20000208 size_of_data + 0x2000020a mode_of_transfer + 0x2000020c . = ALIGN (0x4) + *fill* 0x2000020b 0x1 + 0x2000020c _ebss = . + 0x2000020c _ezero = . + +.stack 0x2000020c 0x284 load address 0x0000157c + 0x20000210 . = ALIGN (0x8) + *fill* 0x2000020c 0x4 + 0x20000210 _sstack = . + 0x20000490 . = (. + STACK_SIZE) + *fill* 0x20000210 0x280 + 0x20000490 . = ALIGN (0x8) + 0x20000490 _estack = . + 0x20000490 . = ALIGN (0x4) + 0x20000490 _end = . +OUTPUT(SAM-BA_MONITOR_ROMLESS.elf elf32-littlearm) + +.ARM.attributes + 0x00000000 0x28 + .ARM.attributes + 0x00000000 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + .ARM.attributes + 0x0000001e 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + .ARM.attributes + 0x0000004a 0x32 Device_Startup/startup_saml22.o + .ARM.attributes + 0x0000007c 0x32 drivers/cdc_enumerate.o + .ARM.attributes + 0x000000ae 0x32 drivers/uart_driver.o + .ARM.attributes + 0x000000e0 0x32 main.o + .ARM.attributes + 0x00000112 0x32 sam_ba/sam_ba_monitor.o + .ARM.attributes + 0x00000144 0x32 sam_ba/usart_sam_ba.o + .ARM.attributes + 0x00000176 0x32 sam_ba/usb_sam_ba.o + .ARM.attributes + 0x000001a8 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x000001d4 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o + +.comment 0x00000000 0x59 + .comment 0x00000000 0x59 Device_Startup/startup_saml22.o + 0x5a (size before relaxing) + .comment 0x00000059 0x5a drivers/cdc_enumerate.o + .comment 0x00000059 0x5a drivers/uart_driver.o + .comment 0x00000059 0x5a main.o + .comment 0x00000059 0x5a sam_ba/sam_ba_monitor.o + .comment 0x00000059 0x5a sam_ba/usart_sam_ba.o + .comment 0x00000059 0x5a sam_ba/usb_sam_ba.o + +.debug_info 0x00000000 0x1202a + .debug_info 0x00000000 0x4db Device_Startup/startup_saml22.o + .debug_info 0x000004db 0x3369 drivers/cdc_enumerate.o + .debug_info 0x00003844 0x3ced drivers/uart_driver.o + .debug_info 0x00007531 0x2654 main.o + .debug_info 0x00009b85 0x3774 sam_ba/sam_ba_monitor.o + .debug_info 0x0000d2f9 0x2ea0 sam_ba/usart_sam_ba.o + .debug_info 0x00010199 0x1e91 sam_ba/usb_sam_ba.o + +.debug_abbrev 0x00000000 0x1680 + .debug_abbrev 0x00000000 0x142 Device_Startup/startup_saml22.o + .debug_abbrev 0x00000142 0x430 drivers/cdc_enumerate.o + .debug_abbrev 0x00000572 0x3af drivers/uart_driver.o + .debug_abbrev 0x00000921 0x323 main.o + .debug_abbrev 0x00000c44 0x467 sam_ba/sam_ba_monitor.o + .debug_abbrev 0x000010ab 0x34b sam_ba/usart_sam_ba.o + .debug_abbrev 0x000013f6 0x28a sam_ba/usb_sam_ba.o + +.debug_loc 0x00000000 0x206d + .debug_loc 0x00000000 0x78 Device_Startup/startup_saml22.o + .debug_loc 0x00000078 0xcf1 drivers/cdc_enumerate.o + .debug_loc 0x00000d69 0x37b drivers/uart_driver.o + .debug_loc 0x000010e4 0x77 main.o + .debug_loc 0x0000115b 0x495 sam_ba/sam_ba_monitor.o + .debug_loc 0x000015f0 0x82a sam_ba/usart_sam_ba.o + .debug_loc 0x00001e1a 0x253 sam_ba/usb_sam_ba.o + +.debug_aranges 0x00000000 0x220 + .debug_aranges + 0x00000000 0x28 Device_Startup/startup_saml22.o + .debug_aranges + 0x00000028 0x68 drivers/cdc_enumerate.o + .debug_aranges + 0x00000090 0x58 drivers/uart_driver.o + .debug_aranges + 0x000000e8 0x28 main.o + .debug_aranges + 0x00000110 0x48 sam_ba/sam_ba_monitor.o + .debug_aranges + 0x00000158 0x78 sam_ba/usart_sam_ba.o + .debug_aranges + 0x000001d0 0x50 sam_ba/usb_sam_ba.o + +.debug_ranges 0x00000000 0x210 + .debug_ranges 0x00000000 0x18 Device_Startup/startup_saml22.o + .debug_ranges 0x00000018 0x88 drivers/cdc_enumerate.o + .debug_ranges 0x000000a0 0x48 drivers/uart_driver.o + .debug_ranges 0x000000e8 0x18 main.o + .debug_ranges 0x00000100 0x68 sam_ba/sam_ba_monitor.o + .debug_ranges 0x00000168 0x68 sam_ba/usart_sam_ba.o + .debug_ranges 0x000001d0 0x40 sam_ba/usb_sam_ba.o + +.debug_macro 0x00000000 0x16dca + .debug_macro 0x00000000 0x351 Device_Startup/startup_saml22.o + .debug_macro 0x00000351 0x898 Device_Startup/startup_saml22.o + .debug_macro 0x00000be9 0x22 Device_Startup/startup_saml22.o + .debug_macro 0x00000c0b 0x87 Device_Startup/startup_saml22.o + .debug_macro 0x00000c92 0x51 Device_Startup/startup_saml22.o + .debug_macro 0x00000ce3 0xef Device_Startup/startup_saml22.o + .debug_macro 0x00000dd2 0x6a Device_Startup/startup_saml22.o + .debug_macro 0x00000e3c 0x1df Device_Startup/startup_saml22.o + .debug_macro 0x0000101b 0x40 Device_Startup/startup_saml22.o + .debug_macro 0x0000105b 0x28 Device_Startup/startup_saml22.o + .debug_macro 0x00001083 0x85 Device_Startup/startup_saml22.o + .debug_macro 0x00001108 0x49b Device_Startup/startup_saml22.o + .debug_macro 0x000015a3 0x713 Device_Startup/startup_saml22.o + .debug_macro 0x00001cb6 0x958 Device_Startup/startup_saml22.o + .debug_macro 0x0000260e 0x279 Device_Startup/startup_saml22.o + .debug_macro 0x00002887 0x21d Device_Startup/startup_saml22.o + .debug_macro 0x00002aa4 0xe12 Device_Startup/startup_saml22.o + .debug_macro 0x000038b6 0x5b6 Device_Startup/startup_saml22.o + .debug_macro 0x00003e6c 0x5be Device_Startup/startup_saml22.o + .debug_macro 0x0000442a 0x623 Device_Startup/startup_saml22.o + .debug_macro 0x00004a4d 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x00004bbf 0x279 Device_Startup/startup_saml22.o + .debug_macro 0x00004e38 0x466 Device_Startup/startup_saml22.o + .debug_macro 0x0000529e 0x21c Device_Startup/startup_saml22.o + .debug_macro 0x000054ba 0x767 Device_Startup/startup_saml22.o + .debug_macro 0x00005c21 0x7bf Device_Startup/startup_saml22.o + .debug_macro 0x000063e0 0x28d Device_Startup/startup_saml22.o + .debug_macro 0x0000666d 0x5f3 Device_Startup/startup_saml22.o + .debug_macro 0x00006c60 0x1c6 Device_Startup/startup_saml22.o + .debug_macro 0x00006e26 0x307 Device_Startup/startup_saml22.o + .debug_macro 0x0000712d 0xac Device_Startup/startup_saml22.o + .debug_macro 0x000071d9 0x1c53 Device_Startup/startup_saml22.o + .debug_macro 0x00008e2c 0xff4 Device_Startup/startup_saml22.o + .debug_macro 0x00009e20 0xd40 Device_Startup/startup_saml22.o + .debug_macro 0x0000ab60 0x874 Device_Startup/startup_saml22.o + .debug_macro 0x0000b3d4 0x9bf Device_Startup/startup_saml22.o + .debug_macro 0x0000bd93 0x8ad Device_Startup/startup_saml22.o + .debug_macro 0x0000c640 0x19bd Device_Startup/startup_saml22.o + .debug_macro 0x0000dffd 0xe7 Device_Startup/startup_saml22.o + .debug_macro 0x0000e0e4 0xb7c Device_Startup/startup_saml22.o + .debug_macro 0x0000ec60 0x369 Device_Startup/startup_saml22.o + .debug_macro 0x0000efc9 0x7c Device_Startup/startup_saml22.o + .debug_macro 0x0000f045 0xac Device_Startup/startup_saml22.o + .debug_macro 0x0000f0f1 0xca Device_Startup/startup_saml22.o + .debug_macro 0x0000f1bb 0x4c Device_Startup/startup_saml22.o + .debug_macro 0x0000f207 0xdc Device_Startup/startup_saml22.o + .debug_macro 0x0000f2e3 0xb2 Device_Startup/startup_saml22.o + .debug_macro 0x0000f395 0x64 Device_Startup/startup_saml22.o + .debug_macro 0x0000f3f9 0x452 Device_Startup/startup_saml22.o + .debug_macro 0x0000f84b 0x4c Device_Startup/startup_saml22.o + .debug_macro 0x0000f897 0x148 Device_Startup/startup_saml22.o + .debug_macro 0x0000f9df 0x5e Device_Startup/startup_saml22.o + .debug_macro 0x0000fa3d 0xa0 Device_Startup/startup_saml22.o + .debug_macro 0x0000fadd 0xc4 Device_Startup/startup_saml22.o + .debug_macro 0x0000fba1 0xb2 Device_Startup/startup_saml22.o + .debug_macro 0x0000fc53 0x4c Device_Startup/startup_saml22.o + .debug_macro 0x0000fc9f 0x64 Device_Startup/startup_saml22.o + .debug_macro 0x0000fd03 0x40 Device_Startup/startup_saml22.o + .debug_macro 0x0000fd43 0x1d9 Device_Startup/startup_saml22.o + .debug_macro 0x0000ff1c 0x22 Device_Startup/startup_saml22.o + .debug_macro 0x0000ff3e 0x15d Device_Startup/startup_saml22.o + .debug_macro 0x0001009b 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x0001020d 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x0001037f 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x000104f1 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x00010663 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x000107d5 0x172 Device_Startup/startup_saml22.o + .debug_macro 0x00010947 0x11e Device_Startup/startup_saml22.o + .debug_macro 0x00010a65 0x5e Device_Startup/startup_saml22.o + .debug_macro 0x00010ac3 0x167 Device_Startup/startup_saml22.o + .debug_macro 0x00010c2a 0xfa Device_Startup/startup_saml22.o + .debug_macro 0x00010d24 0xfa Device_Startup/startup_saml22.o + .debug_macro 0x00010e1e 0xfa Device_Startup/startup_saml22.o + .debug_macro 0x00010f18 0xfa Device_Startup/startup_saml22.o + .debug_macro 0x00011012 0x124 Device_Startup/startup_saml22.o + .debug_macro 0x00011136 0x2e Device_Startup/startup_saml22.o + .debug_macro 0x00011164 0x1f9 Device_Startup/startup_saml22.o + .debug_macro 0x0001135d 0x3a Device_Startup/startup_saml22.o + .debug_macro 0x00011397 0x41e Device_Startup/startup_saml22.o + .debug_macro 0x000117b5 0x30e9 Device_Startup/startup_saml22.o + .debug_macro 0x0001489e 0x6d Device_Startup/startup_saml22.o + .debug_macro 0x0001490b 0x4ca drivers/cdc_enumerate.o + .debug_macro 0x00014dd5 0x22 drivers/cdc_enumerate.o + .debug_macro 0x00014df7 0x52 drivers/cdc_enumerate.o + .debug_macro 0x00014e49 0x35 drivers/cdc_enumerate.o + .debug_macro 0x00014e7e 0x9c drivers/cdc_enumerate.o + .debug_macro 0x00014f1a 0x16d drivers/cdc_enumerate.o + .debug_macro 0x00015087 0x52 drivers/cdc_enumerate.o + .debug_macro 0x000150d9 0x1f drivers/cdc_enumerate.o + .debug_macro 0x000150f8 0x43 drivers/cdc_enumerate.o + .debug_macro 0x0001513b 0x20 drivers/cdc_enumerate.o + .debug_macro 0x0001515b 0x187 drivers/cdc_enumerate.o + .debug_macro 0x000152e2 0x330 drivers/cdc_enumerate.o + .debug_macro 0x00015612 0x10 drivers/cdc_enumerate.o + .debug_macro 0x00015622 0x35 drivers/cdc_enumerate.o + .debug_macro 0x00015657 0x1c drivers/cdc_enumerate.o + .debug_macro 0x00015673 0x46 drivers/cdc_enumerate.o + .debug_macro 0x000156b9 0x94 drivers/cdc_enumerate.o + .debug_macro 0x0001574d 0x34 drivers/cdc_enumerate.o + .debug_macro 0x00015781 0x28 drivers/cdc_enumerate.o + .debug_macro 0x000157a9 0x439 drivers/uart_driver.o + .debug_macro 0x00015be2 0x43f main.o + .debug_macro 0x00016021 0x465 sam_ba/sam_ba_monitor.o + .debug_macro 0x00016486 0x46 sam_ba/sam_ba_monitor.o + .debug_macro 0x000164cc 0x2e sam_ba/sam_ba_monitor.o + .debug_macro 0x000164fa 0x448 sam_ba/usart_sam_ba.o + .debug_macro 0x00016942 0x40 sam_ba/usart_sam_ba.o + .debug_macro 0x00016982 0x448 sam_ba/usb_sam_ba.o + +.debug_line 0x00000000 0x3e66 + .debug_line 0x00000000 0x71e Device_Startup/startup_saml22.o + .debug_line 0x0000071e 0xa37 drivers/cdc_enumerate.o + .debug_line 0x00001155 0x903 drivers/uart_driver.o + .debug_line 0x00001a58 0x837 main.o + .debug_line 0x0000228f 0x9ad sam_ba/sam_ba_monitor.o + .debug_line 0x00002c3c 0x9b5 sam_ba/usart_sam_ba.o + .debug_line 0x000035f1 0x875 sam_ba/usb_sam_ba.o + +.debug_str 0x00000000 0x89062 + .debug_str 0x00000000 0x83a41 Device_Startup/startup_saml22.o + 0x83cb4 (size before relaxing) + .debug_str 0x00083a41 0x4219 drivers/cdc_enumerate.o + 0x87c30 (size before relaxing) + .debug_str 0x00087c5a 0x8dc drivers/uart_driver.o + 0x87a7b (size before relaxing) + .debug_str 0x00088536 0x640 main.o + 0x875a5 (size before relaxing) + .debug_str 0x00088b76 0x356 sam_ba/sam_ba_monitor.o + 0x87af3 (size before relaxing) + .debug_str 0x00088ecc 0x129 sam_ba/usart_sam_ba.o + 0x87602 (size before relaxing) + .debug_str 0x00088ff5 0x6d sam_ba/usb_sam_ba.o + 0x8734f (size before relaxing) + +.debug_frame 0x00000000 0x530 + .debug_frame 0x00000000 0x38 Device_Startup/startup_saml22.o + .debug_frame 0x00000038 0x10c drivers/cdc_enumerate.o + .debug_frame 0x00000144 0xb4 drivers/uart_driver.o + .debug_frame 0x000001f8 0x44 main.o + .debug_frame 0x0000023c 0xb0 sam_ba/sam_ba_monitor.o + .debug_frame 0x000002ec 0x14c sam_ba/usart_sam_ba.o + .debug_frame 0x00000438 0xcc sam_ba/usb_sam_ba.o + .debug_frame 0x00000504 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/arm/arm-gnu-toolchain/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc_nano.a(lib_a-init.o) diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.srec b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.srec new file mode 100644 index 0000000..c7790fc --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/SAM-BA_MONITOR_ROMLESS.srec @@ -0,0 +1,318 @@ +S01E000053414D2D42415F4D4F4E49544F525F524F4D4C4553532E737265636A +S1130000900400200D010000090100000901000016 +S113001000000000000000000000000000000000DC +S113002000000000000000000000000009010000C2 +S113003000000000000000000901000009010000A8 +S11300400901000009010000090100000901000084 +S11300500901000009010000090100000901000074 +S11300600901000009010000090100000901000064 +S11300700901000009010000090100000901000054 +S11300800901000009010000090100000901000044 +S11300900901000009010000090100000901000034 +S11300A0090100000901000010B5064C2378002B5B +S11300B007D1054B002B02D0044800E000BF012308 +S11300C0237010BD4C0000200000000070130000DD +S11300D0084B10B5002B03D00749084800E000BFC7 +S11300E007480368002B00D110BD064B002BFBD042 +S11300F09847F9E70000000050000020701300004A +S11301007013000000000000FEE7000010B5104A64 +S1130110104B9A4209D00F4B0D4A03E01168196045 +S1130120043304320C498B42F8D30C4B02E0002216 +S11301301A6004330A4A9342F9D30A4AFF210A4B4C +S11301408B439360094B9847094B9847FEE7C04699 +S113015070130000000000204C0000204C00002020 +S11301600C02002000ED00E00000000081120000FD +S1130170390A000030B504681E4B1B78002B14D1DB +S11301801D4B1E481864586C800B85035D645D6CC0 +S11301901B4828405864A2204000235C40252B4380 +S11301A023544438FF38134B18704823FF33E35C5F +S11301B0DB071DD5104B5B6C9B049B0C934203D255 +S11301C00D4B5A6C9204920C002303E00B48C05C64 +S11301D0C85401339342F9D34821FF31635C0120B1 +S11301E00343DBB263540021024B1970100030BD8D +S11301F00020FCE7680000206C010020AC00002017 +S1130200FF3F00F0F0B505681800441EA041C0B2DD +S11302101E005F01224CE419103464686400640F0A +S113022003340127A74097422ED80F0058011C49D8 +S113023009184C6980200006204348615801184978 +S113024009180C000F6148699104890C800B800324 +S113025001436161606913490140616108335B01D5 +S1130260EB18D97902200143C9B2D9715879802198 +S1130270494201435971330008335B01EB18DB79C0 +S11302809B07F8D51000F0BD8001074FC719002463 +S113029002E0085D385501349442FAD3CEE7C046F3 +S11302A06C010020FF3F00F0EC00002010B500239B +S11302B0014CA04710BDC04605020000324A9369B4 +S11302C001210B439361314B314A9A62314999625E +S11302D09A62314A9A628222D205137801210B4331 +S11302E013708223DB059B78DB07FAD42B4B1A6847 +S11302F0520B1F2313401F2B38D08221C9050A8DAE +S11303009B012748024013430B85244B1A68920C27 +S11303101F231A401F2A2BD08221C9050B8D1F20B1 +S1130320834313430B851D4B1A68D20D07231340D7 +S1130330072B1FD08222D205118D1B0319480140BF +S11303400B43138511787F230B401370137804211A +S11303500B431370144B536211890C208143118198 +S113036011890B3881431181002209E01A3BC4E74B +S1130370023AD1E7043BDDE7002119700132013371 +S11303807F2AF9D97047C046000800400060004148 +S113039000000356000103D6000203D61860800053 +S11303A03FF8FFFFFF8FFFFF6C0100200160002377 +S11303B003714371054B8360054BC360054B0361B7 +S11303C00B78022213430B707047C04609080000E3 +S11303D0050200007501000030B50468164B1B7857 +S11303E0002B08D04620FF30235C40252B432354A8 +S11303F00020114B187011480164436C9B0B990346 +S11304004164416C93041B090D4D29400B43436423 +S1130410A2214900635C4020034363544823FF3313 +S1130420E35CDB07FAD54821FF31635C0120034319 +S1130430DBB26354100030BD680000206C01002062 +S1130440FF3F00F00C4A53699B0B9903516108224A +S1130450FF32835C02210B43DBB283540622FF325A +S1130460815C80235B420B4383540823FF33C35CCA +S11304709B07FAD57047C0466C010020002904D1BF +S113048010220623FF33C254704720220623FF3371 +S1130490C254F9E7F0B5D6464F464646C0B582B0D9 +S11304A004680822FF32A35C10210B43DBB2A3547F +S11304B0C5490E784B788D78CA78120215432DB24F +S11304C0AAB294460F794A79120217433FB2BAB2DC +S11304D090468A799146CA79120249460A4392465D +S11304E040218946C4314A4662541B023343B7490A +S11304F08B4200D1FFE016DD882109018B4200D137 +S1130500BAE034DDB2498B4200D150E153DDB14948 +S11305108B4200D14FE1B04A934213D14571200080 +S1130520AE4B9847A2E080225200934200D1F1E002 +S11305300DDC812B00D1ACE0822B00D1B1E0802B0B +S113054000D19EE001212000A54B98478EE0812236 +S11305505200934200D1E6E000DAE0E0FF32FF32DD +S11305609342EFD1012120009D4B98477EE0A021CA +S1130570C9008B4272D08131FF318B424DD0994AF0 +S11305809342DFD10F23424613406246002A00D033 +S1130590BBE0002B00D1B8E0032B00D9B5E03A064C +S11305A000D5ACE008335B01E31810225A71200037 +S11305B08A4B98475AE0902212019342C2D10571A6 +S11305C02000864B98470322A0235B00E254864B0D +S11305D0586C864A1040C021890508435864402558 +S11305E04620FF302554824818643026902040006D +S11305F02654586B104001435963802192204000D7 +S113060021547C481863B02040002554586F0240A0 +S11306105A67B2235B00E15428E080235B009C45C9 +S11306200BD080239B009C4513D15346432B0ED8FB +S113063052467149714B984718E05346122B04D81F +S113064052466F496D4B984710E01222F9E7432256 +S1130650EFE701212000624B984707E020005F4B41 +S11306609847802252422A43D2B2A27202B01CBCE2 +S113067090469946A246F0BD011D01225F4B984762 +S1130680F4E76B46991D00230B8002225B4B9847CD +S1130690ECE76B46991D00230B800222574B9847C9 +S11306A0E4E700226B46DA8050323A400F23414699 +S11306B00B40032B1AD8002A0ED008335B01E41830 +S11306C0A2795209012313406A46D38002226B4661 +S11306D0991D4A4B9847C9E708335B01E418A2798E +S11306E01209012313406A46D380EFE70121200059 +S11306F03B4B9847BAE72000384B9847B6E7083396 +S11307005B01E31820225A7151E701212000344B88 +S11307109847ABE701212000314B9847A6E720001A +S11307202E4B9847A2E70F23424613406246002A05 +S113073038D1002B36D0032B34D83A061AD41A00F9 +S113074008325201A2189279D2060FD51A00083243 +S11307505201A21810211171D279920606D50833DC +S11307605B01E3182022DA711F3A1A7120001B4B37 +S113077098477BE71A0008325201A2189279920630 +S1130780F4D51A0008325201A21820211171D2792D +S11307905206EBD508335B01E3184022DA713E3A86 +S11307A01A71E3E7012120000D4B98475EE7200012 +S11307B00A4B98475AE75346082B23D852460E490A +S11307C044310E4B984751E76C00002001030000B0 +S11307D021200000A1210000212200004504000086 +S11307E07D040000020300006C010020FFFFFF8F66 +S11307F0AC0000202C01002000000020AD0200000D +S1130800C81200000822DAE7F8B5040003689A8BDE +S1130810120707D40822FF329B5CDB0635D51C4B3C +S1130820984732E09A8B08210A4392B29A83802235 +S11308309A72112080214900585440260621FF3124 +S11308405E5482256D005A55124A576812498C46E7 +S11308500F40C0218905380008435060506967463D +S11308603840014351610D4911600D4911615068CF +S11308700C49084080218902014351605168890B69 +S1130880880350605E55002323712079F8BDC0466B +S1130890950400006C010020FFFFFF8F6C00002016 +S11308A0EC000020FF3F00F010B5C3699B07FCD4A7 +S11308B0046802239C430460C369DB07FCD4046816 +S11308C0012323430360C369DB07FCD4C369DB074B +S11308D0FCD4C3699B07F9D4084B1A430260C3696B +S11308E05B07FCD4C0239B0243608181C3699B07DF +S11308F0FCD4026802231343036010BD840000404B +S113090010B586B01F4A94235B001F49D1501F487D +S1130910D050D1501E49D1501E486B46020013CA14 +S113092013C313CA13C30023052B09D89A006946BD +S11309305158194A914201D00133F5E7DBB200E086 +S113094000231648C2695C1C0121A1400A43C2610C +S113095019001031124A30339B00002098509858E7 +S11309604024204398500B0020339B000C4A9B5892 +S11309705B06F8D5C42292030A4907480A4B9847F4 +S113098006B010BD0060004100000353000103D312 +S1130990000203D3DC1200000014004200080040EF +S11309A0001C004004C50000A9080000C369002B16 +S11309B0FCD189B20185037E9B07FCD57047C369CE +S11309C0002BFCD1438BDBB2002B03D0438B0722DB +S11309D093434383008DC0B270470000024B1B7EDB +S11309E09B080120184070470014004210B582B0E3 +S11309F00E4B1868431C17D00D4A0223536006247B +S1130A00412154549361116A19400191126A1340AF +S1130A100193019B002B07D080239B011A6882F36A +S1130A200888044A9360004702B010BD0420000007 +S1130A300061004100ED00E010B5104B98471049EB +S1130A404B681E2293431C3A13434B600D490B7DA4 +S1130A500C208343042003430B750B4B0121997134 +S1130A609A70094B9B79002BFBD0BFF35F8F62B662 +S1130A70064B9847064B9847FCE7C046ED09000033 +S1130A80004000410010004000040040AD0A000096 +S1130A90210E000010B5034B1B68DB6802210248DD +S1130AA0984710BD000200204813000010B5284BE1 +S1130AB09847284A284B9A82274BDB68DB07FBD5EB +S1130AC082225200254B5A62244B5B685B07FBD49D +S1130AD041218023214AD1508023204AD3585B06E8 +S1130AE0FAD51F4B1A68920E3F2A2FD01D490B8B43 +S1130AF0802083430B831B4BDB68DB05FBD5194943 +S1130B00194B0B62920280239B001A43CA61154B56 +S1130B10DB68DB05FBD50622124B1A83114BDB681D +S1130B20DB05FBD5832252000C4BDA620B4B5B686E +S1130B300C221A42FAD143219823084AD150074B78 +S1130B405B685B07FBD4094B984710BD203ACDE79F +S1130B50010900004E04000000140040001C004085 +S1130B602060800000100040B8051F0C7D110000BB +S1130B7070B584B01E4B1B78002B33D004290AD0E7 +S1130B8002290AD004784D006A1E06236B449C4651 +S1130B906244002008E00468F5E70488F3E737338B +S1130BA013702409013A0130A84207D20F232340CD +S1130BB0092BF4D8302633431370F2E701A830230D +S1130BC00370483343704B1C5B000A22C254033544 +S1130BD00D234355074B1B68DB68023149009847D6 +S1130BE004B070BD034B1B68DB689847F8E7C04648 +S1130BF0690000200002002072B6BFF35F8FEFF39C +S1130C000883064A1360036883F30888FF230200FD +S1130C109A43034B9A6043681847704704020020C4 +S1130C2000ED00E0F0B5C64600B592B000267A2388 +S1130C309846734B1B681B69402101A8984707001D +S1130C40002501AC54E06F4B1B78002B2CD143469C +S1130C50532B2CD04346522B63D043464F2B67D0A3 +S1130C604346482B6AD04346572B6DD043466F2BDF +S1130C706DD04346682B6FD04346772B73D04346E1 +S1130C80472B77D04346542B00D17EE043464E2B6E +S1130C9000D180E04346562B20D1594B1B68DB68BA +S1130CA01B215948984719E0584B9847CFE701341E +S1130CB00135119A781B904200D91000002105E0FB +S1130CC02278327001360134013501318142F7D383 +S1130CD0013D013C119B99421CD3C0460023119352 +S1130CE0484B1B78002B61D17A2398460134013597 +S1130CF0BD429ED22378FF2BF9D0232BA3D01A0018 +S1130D00303AD2B2092A5AD8119A1201303B13430D +S1130D101193EBE73A4A12689269591A30009047E6 +S1130D20DBE7374B1B685B69119930009847D5E7BF +S1130D306B4644229B181B783370CFE76B464422E2 +S1130D409B181B883380C9E7119B3360C6E70121D8 +S1130D5030002F4B9847C1E733881193022111A823 +S1130D602B4B9847BAE733681193042111A8284BF9 +S1130D709847B3E71198274B9847274B1B6883F391 +S1130D800888BFF35F8F62B6A8E701221D4B1A7073 +S1130D901E4B9847A2E71B4B1B78002B03D0002265 +S1130DA0184B1A709AE7194B9847F8E7144B1B68CD +S1130DB0DB680121194898477A23984696E71A0078 +S1130DC0413AD2B2052A05D8119A1201373B13438E +S1130DD011938BE71A00613AD2B2052A05D8119A09 +S1130DE01201573B1343119380E72C2B03D09846F1 +S1130DF0002311937AE7119E0023119376E7C046EE +S1130E000002002069000020F4120000950A00008E +S1130E10710B0000F90B0000040200204C130000C9 +S1130E2010B50D4883689847002804D10B4B9847A8 +S1130E30002806D110BD0A4B1C330A4A13600A4B22 +S1130E4098470A4B98472328F4D1054B3833054A71 +S1130E501360054B9847C046EC010020DD090000F3 +S1130E60F412000000020020250C0000890E00008E +S1130E7010B5C1B20248034B9847012010BDC046CB +S1130E8000140042AD09000010B5044B9847002837 +S1130E90FBD00348034B984710BDC046DD09000052 +S1130EA000140042BF09000070B50E0005000024C4 +S1130EB004E02878034B984701350134B442F8D351 +S1130EC0200070BD710E000010B50400024B98475D +S1130ED02070012010BDC046890E00000002484069 +S1130EE0002305E040000749484080B201339BB22B +S1130EF0072B05D802B2002AF4DB400080B2F5E7E4 +S1130F007047C04621100000F0B583B007000E0002 +S1130F1000240023019306E07B1C3D70802E15D035 +S1130F201F000134A4B2B44216D20D4B9847C5B287 +S1130F30019928000B4B984701900B4B1B88002B01 +S1130F40EAD10A4B1B78002BEBD0E5E706490A8867 +S1130F50013A0A801F00E4E7019803B0F0BDC046DF +S1130F60890E0000DD0E0000080200200A020020A5 +S1130F70F8B507000C000120154DA8472000A8472C +S1130F80E043C0B2A847002400260DE03D78013BB1 +S1130F90104A1380013728000D4B98472100280080 +S1130FA00D4B9847040001367F2E08D8094B1B8847 +S1130FB0002BEBD1094A1578002DECD0E6E7200A86 +S1130FC0C0B2034DA847E0B2A847054B9847F8BD07 +S1130FD0710E000008020020DD0E00000A0200204D +S1130FE0890E0000F0B583B006000D00022101A8AF +S1130FF0124CA04780213000A0470600104FB8478C +S113100080B2000284B2B84780B22418A4B2A642C7 +S113101003D101AB1B78AB4205D01820094B98478C +S1131020002003B0F0BD01AB5B78ED43EDB2AB4201 +S1131030F3D10620034B98470120F2E7090F000083 +S1131040890E0000710E000070B505000E1E09D156 +S113105001221C4B1A70730602D080367F239E43F4 +S1131060002406E0184B19800022164B1A70F2E790 +S11310700124002C10D1154B9847FF231840432816 +S1131080F6D071281BD01528F3D1F1E70134E4B26E +S1131090803E8035002E08D0210028000C4B984754 +S11310A0FF2318400628F1D0F4E70420094B9847A1 +S11310B0064B98470022034B1A70012000E00020E1 +S11310C070BDC0460A02002008020020890E0000FC +S11310D0710F0000710E000070B50500002904D1E5 +S11310E001221F4B1A70642611E01E4B1980002246 +S11310F01B4B1A70F7E7013C1B4B9847002801D1A2 +S1131100002CF8D1002C22D1013E002E25D0432002 +S1131110164B9847164CEFE721002800154B9847CB +S1131120020001280FD0002A14D0134B9847002244 +S1131130FF2318400128EFD00428F4D106200B4BDC +S113114098470022EFE70134E4B28035EBE701244D +S11311500122E8E7024B1A700126300070BDC04638 +S11311600A02002008020020DD090000710E0000C0 +S113117000350C00E50F0000890E000010B5054C89 +S11311808223DB052360044B984721682000034B2E +S1131190984710BDEC010020BD020000AD03000023 +S11311A010B582B001900123012201A90248034C29 +S11311B0A047012002B010BDEC0100200502000090 +S11311C010B582B06B46DC1D012221000248034B9E +S11311D09847207802B010BDEC0100207501000092 +S11311E010B50848084B9847002808D0054B1A68E2 +S11311F04823FF33D05C473BFF3B184010BD002021 +S1131200FCE7C046EC0100200908000070B50C00A2 +S113121001230A0001000248024DA847200070BDC6 +S1131220EC0100200502000070B504000D00064822 +S1131230064B9847002801D1002070BD2A002100E8 +S11312400148034B9847F8E7EC0100200908000027 +S11312507501000070B504000D000648064B984760 +S1131260002801D1002070BD2A0021000148034B51 +S11312709847F8E7EC01002009080000D9030000B2 +S113128070B500260C4D0D4C641BA410A64209D168 +S1131290002600F05DF80A4D0A4C641BA410A64217 +S11312A005D170BDB300EB5898470136EEE7B300A3 +S11312B0EB5898470136F2E75C1300005C1300001A +S11312C05C130000601300001201100102000040D2 +S11312D0EB0324611001000000010000000400423F +S11312E000080042000C00420010004200140042BA +S11312F00018004276322E3138446563203139209B +S1131300323031372031353A32383A34330A0D002D +S1131310A1110000C1110000E11100000D12000034 +S1131320291200000D12000055120000710E000079 +S1131330890E0000DD090000A90E0000C90E00009E +S113134049100000D91000000A0D00003E00000002 +S1131350F8B5C046F8BC08BC9E467047D1000000F2 +S1131360F8B5C046F8BC08BC9E467047A90000000A +S113137009024300020100C0000904000001020246 +S113138000000524001001042402000524060001C5 +S11313900524010001070583030800FF0904010077 +S11313A0020A00000007058102400000070502024E +S10F13B04000000000C201000000080022 +S9030000FC diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/drivers/cdc_enumerate.d b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/cdc_enumerate.d new file mode 100644 index 0000000..79db2ff --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/cdc_enumerate.d @@ -0,0 +1,295 @@ +drivers/cdc_enumerate.d drivers/cdc_enumerate.o: \ + ../drivers/cdc_enumerate.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + ../drivers/cdc_enumerate.h ../device_config/device_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h \ + ../device_config/device_config_saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +../drivers/cdc_enumerate.h: + +../device_config/device_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h: + +../device_config/device_config_saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/drivers/cdc_enumerate.o b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/cdc_enumerate.o new file mode 100644 index 0000000..978196a Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/cdc_enumerate.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/drivers/uart_driver.d b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/uart_driver.d new file mode 100644 index 0000000..2b03dff --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/uart_driver.d @@ -0,0 +1,294 @@ +drivers/uart_driver.d drivers/uart_driver.o: ../drivers/uart_driver.c \ + ../drivers/uart_driver.h ../device_config/device_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h \ + ../device_config/device_config_saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h + +../drivers/uart_driver.h: + +../device_config/device_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h: + +../device_config/device_config_saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/drivers/uart_driver.o b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/uart_driver.o new file mode 100644 index 0000000..47523cd Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/drivers/uart_driver.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/main.d b/SAM-BA_MONITOR_ROMLESS/Debug/main.d new file mode 100644 index 0000000..689f039 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/main.d @@ -0,0 +1,294 @@ +main.d main.o: .././main.c ../sam_ba/sam_ba_monitor.h \ + ../device_config/device_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h \ + ../device_config/device_config_saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h + +../sam_ba/sam_ba_monitor.h: + +../device_config/device_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h: + +../device_config/device_config_saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/main.o b/SAM-BA_MONITOR_ROMLESS/Debug/main.o new file mode 100644 index 0000000..a87bf56 Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/main.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/makedep.mk b/SAM-BA_MONITOR_ROMLESS/Debug/makedep.mk new file mode 100644 index 0000000..51556c5 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/makedep.mk @@ -0,0 +1,20 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +Device_Startup\startup_saml22.c + +Device_Startup\system_saml22.c + +drivers\cdc_enumerate.c + +drivers\uart_driver.c + +main.c + +sam_ba\sam_ba_monitor.c + +sam_ba\usart_sam_ba.c + +sam_ba\usb_sam_ba.c + diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/sam_ba_monitor.d b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/sam_ba_monitor.d new file mode 100644 index 0000000..b3891ab --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/sam_ba_monitor.d @@ -0,0 +1,305 @@ +sam_ba/sam_ba_monitor.d sam_ba/sam_ba_monitor.o: \ + ../sam_ba/sam_ba_monitor.c ../sam_ba/sam_ba_monitor.h \ + ../device_config/device_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h \ + ../device_config/device_config_saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h \ + ../sam_ba/usart_sam_ba.h ../sam_ba/usb_sam_ba.h ../drivers/uart_driver.h \ + ../drivers/cdc_enumerate.h + +../sam_ba/sam_ba_monitor.h: + +../device_config/device_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h: + +../device_config/device_config_saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: + +../sam_ba/usart_sam_ba.h: + +../sam_ba/usb_sam_ba.h: + +../drivers/uart_driver.h: + +../drivers/cdc_enumerate.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/sam_ba_monitor.o b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/sam_ba_monitor.o new file mode 100644 index 0000000..0f50080 Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/sam_ba_monitor.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usart_sam_ba.d b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usart_sam_ba.d new file mode 100644 index 0000000..ea9f0da --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usart_sam_ba.d @@ -0,0 +1,297 @@ +sam_ba/usart_sam_ba.d sam_ba/usart_sam_ba.o: ../sam_ba/usart_sam_ba.c \ + ../sam_ba/usart_sam_ba.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h \ + ../drivers/uart_driver.h ../device_config/device_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h \ + ../device_config/device_config_saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h + +../sam_ba/usart_sam_ba.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h: + +../drivers/uart_driver.h: + +../device_config/device_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h: + +../device_config/device_config_saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usart_sam_ba.o b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usart_sam_ba.o new file mode 100644 index 0000000..faff4cd Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usart_sam_ba.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usb_sam_ba.d b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usb_sam_ba.d new file mode 100644 index 0000000..d17e4b9 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usb_sam_ba.d @@ -0,0 +1,297 @@ +sam_ba/usb_sam_ba.d sam_ba/usb_sam_ba.o: ../sam_ba/usb_sam_ba.c \ + ../drivers/cdc_enumerate.h ../device_config/device_config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h \ + ../device_config/device_config_saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h \ + ../sam_ba/usb_sam_ba.h + +../drivers/cdc_enumerate.h: + +../device_config/device_config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_default_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\features.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_newlib_version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_intsup.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stdbool.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\newlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\ieeefp.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\reent.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\_ansi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\lib\gcc\arm-none-eabi\6.2.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\machine\_types.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\cdefs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\_locale.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\arm\arm-gnu-toolchain\arm-none-eabi\include\sys\string.h: + +../device_config/device_config_saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/sam.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/saml22n18a.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/core_cm0plus.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_compiler.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include/cmsis_gcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/system_saml22.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/sercom.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/tcc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/component/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/adc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/aes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/ccl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dmac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/dsu.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/eic.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/evsys.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/freqm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/gclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mclk.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/mtb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/nvmctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/oscctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/osc32kctrl.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pac.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/pm.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/port.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rstc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/rtc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom4.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/sercom5.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/slcd.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/supc.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tal.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc1.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc2.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tc3.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/tcc0.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/trng.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/usb.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/instance/wdt.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include/pio/saml22n18a.h: + +../sam_ba/usb_sam_ba.h: diff --git a/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usb_sam_ba.o b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usb_sam_ba.o new file mode 100644 index 0000000..4427c34 Binary files /dev/null and b/SAM-BA_MONITOR_ROMLESS/Debug/sam_ba/usb_sam_ba.o differ diff --git a/SAM-BA_MONITOR_ROMLESS/Device_Startup/saml22n18a_flash.ld b/SAM-BA_MONITOR_ROMLESS/Device_Startup/saml22n18a_flash.ld new file mode 100644 index 0000000..e5a0eba --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Device_Startup/saml22n18a_flash.ld @@ -0,0 +1,142 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAML22N18A + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/SAM-BA_MONITOR_ROMLESS/Device_Startup/saml22n18a_sram.ld b/SAM-BA_MONITOR_ROMLESS/Device_Startup/saml22n18a_sram.ld new file mode 100644 index 0000000..5234050 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Device_Startup/saml22n18a_sram.ld @@ -0,0 +1,141 @@ +/** + * \file + * + * \brief Linker script for running in internal SRAM on the SAML22N18A + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > ram + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > ram + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/SAM-BA_MONITOR_ROMLESS/Device_Startup/startup_saml22.c b/SAM-BA_MONITOR_ROMLESS/Device_Startup/startup_saml22.c new file mode 100644 index 0000000..3d92a68 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Device_Startup/startup_saml22.c @@ -0,0 +1,224 @@ +/** + * \file + * + * \brief gcc starttup file for SAML22 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "saml22.h" + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void SYSTEM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); /* MCLK, OSC32KCTRL, OSCCTRL, PAC, PM, SUPC, TAL */ +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void FREQM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM3 +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void SLCD_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_AES +void AES_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TRNG +void TRNG_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnSYSTEM_Handler = (void*) SYSTEM_Handler, /* 0 Main Clock, 32k Oscillators Control, Oscillators Control, Peripheral Access Controller, Power Manager, Supply Controller, Trigger Allocator */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 1 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 2 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 3 External Interrupt Controller */ + .pfnFREQM_Handler = (void*) FREQM_Handler, /* 4 Frequency Meter */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 5 Universal Serial Bus */ +#else + .pvReserved5 = (void*) (0UL), /* 5 Reserved */ +#endif + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 6 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 7 Direct Memory Access Controller */ + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ +#ifdef ID_SERCOM3 + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#else + .pvReserved12 = (void*) (0UL), /* 12 Reserved */ +#endif +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control */ + .pfnTC0_Handler = (void*) TC0_Handler, /* 16 Basic Timer Counter 0 */ + .pfnTC1_Handler = (void*) TC1_Handler, /* 17 Basic Timer Counter 1 */ + .pfnTC2_Handler = (void*) TC2_Handler, /* 18 Basic Timer Counter 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 19 Basic Timer Counter 3 */ + .pfnADC_Handler = (void*) ADC_Handler, /* 20 Analog Digital Converter */ + .pfnAC_Handler = (void*) AC_Handler, /* 21 Analog Comparators */ +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 22 Peripheral Touch Controller */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif + .pfnSLCD_Handler = (void*) SLCD_Handler, /* 23 Segment Liquid Crystal Display Controller */ +#ifdef ID_AES + .pfnAES_Handler = (void*) AES_Handler, /* 24 Advanced Encryption Standard */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_TRNG + .pfnTRNG_Handler = (void*) TRNG_Handler /* 25 True Random Generator */ +#else + .pvReserved25 = (void*) (0UL) /* 25 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Initialize the C library */ + __libc_init_array(); + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/SAM-BA_MONITOR_ROMLESS/Device_Startup/system_saml22.c b/SAM-BA_MONITOR_ROMLESS/Device_Startup/system_saml22.c new file mode 100644 index 0000000..abf0db3 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/Device_Startup/system_saml22.c @@ -0,0 +1,63 @@ +/** + * \file + * + * \brief Low-level initialization functions called upon chip startup. + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "saml22.h" + +/** + * Initial system clock frequency. The System RC Oscillator (RCSYS) provides + * the source for the main clock at chip startup. + */ +#define __SYSTEM_CLOCK (1000000) + +uint32_t SystemCoreClock = __SYSTEM_CLOCK;/*!< System Clock Frequency (Core Clock)*/ + +/** + * Initialize the system + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit(void) +{ + // Keep the default device state after reset + SystemCoreClock = __SYSTEM_CLOCK; + return; +} + +/** + * Update SystemCoreClock variable + * + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate(void) +{ + // Not implemented + SystemCoreClock = __SYSTEM_CLOCK; + return; +} diff --git a/SAM-BA_MONITOR_ROMLESS/SAM-BA_MONITOR_ROMLESS.componentinfo.xml b/SAM-BA_MONITOR_ROMLESS/SAM-BA_MONITOR_ROMLESS.componentinfo.xml new file mode 100644 index 0000000..58cc14d --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/SAM-BA_MONITOR_ROMLESS.componentinfo.xml @@ -0,0 +1,169 @@ + + + + + + + CMSIS + CORE + + + ARM + 5.0.1 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Documentation\Core\html\index.html + + doc + + Cq3aNYyqgx20hdPs+CNSlQ== + + CMSIS/Documentation/Core/html/index.html + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\ARM\CMSIS\5.0.1\CMSIS\Include\ + + include + + + + CMSIS/Include/ + + + + + CMSIS + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/ARM/CMSIS/5.0.1/ARM.CMSIS.pdsc + 5.0.1 + true + ARMv6_7_8-M Device + + + + Resolved + Fixed + true + + + + + Device + Startup + + + Atmel + 1.1.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include + + include + C + + + include + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\include\sam.h + + header + C + cXsQfvfJ/CQ/w9g4nWF89A== + + include/sam.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\templates\main.c + template + source + C Exe + o0ncidL5gR0Z0YwWJ1YroQ== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\templates\main.cpp + template + source + C Exe + nU+WlKcYaWh0AWBBS+WVpA== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\gcc\system_saml22.c + config + source + GCC Exe + QxmCAz4Nbg0fM75LyqfaYA== + + gcc/system_saml22.c + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\gcc\gcc\startup_saml22.c + config + source + GCC Exe + d/+mKi/v2cF5aczwKIlBGg== + + gcc/gcc/startup_saml22.c + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\gcc\gcc\saml22n18a_flash.ld + config + linkerScript + GCC Exe + D/4R/dZIRdF601OWPoZC5g== + + gcc/gcc/saml22n18a_flash.ld + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAML22_DFP\1.1.62\gcc\gcc\saml22n18a_sram.ld + config + other + GCC Exe + nHAA3b8O/8DT8v62Fb39xA== + + gcc/gcc/saml22n18a_sram.ld + + + + + SAML22_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/SAML22_DFP/1.1.62/Atmel.SAML22_DFP.pdsc + 1.1.62 + true + ATSAML22N18A + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/SAM-BA_MONITOR_ROMLESS.cproj b/SAM-BA_MONITOR_ROMLESS/SAM-BA_MONITOR_ROMLESS.cproj new file mode 100644 index 0000000..5aae110 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/SAM-BA_MONITOR_ROMLESS.cproj @@ -0,0 +1,241 @@ + + + + 2.0 + 7.0 + com.Atmel.ARMGCC.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATSAML22N18A + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + SAM-BA_MONITOR_ROMLESS + SAM-BA_MONITOR_ROMLESS + SAM-BA_MONITOR_ROMLESS + Native + true + false + false + true + 0x20000000 + + true + exception_table + 2 + 0 + + + + + + + + + + + + + com.atmel.avrdbg.tool.edbg + SWD + ATML2547040200002562 + 0x10820100 + + + + 2000000 + + SWD + + com.atmel.avrdbg.tool.edbg + ATML2547040200002562 + EDBG + + 2000000 + + + + + True + True + True + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\ARM\CMSIS\5.0.1\CMSIS\Include\ + %24(PackRepoDir)\atmel\SAML22_DFP\1.1.62\include + + + Optimize for size (-Os) + True + True + + + libm + + + + + %24(ProjectDir)\Device_Startup + + + True + -Tsaml22n18a_flash.ld + + + %24(PackRepoDir)\ARM\CMSIS\5.0.1\CMSIS\Include\ + %24(PackRepoDir)\atmel\SAML22_DFP\1.1.62\include + + + + + %24(PackRepoDir)\ARM\CMSIS\5.0.1\CMSIS\Include\ + %24(PackRepoDir)\atmel\SAML22_DFP\1.1.62\include + + + + + + + + + True + True + True + True + True + + + DEBUG + + + + + ../device_config + ../drivers + ../sam_ba + %24(PackRepoDir)\ARM\CMSIS\5.0.1\CMSIS\Include\ + %24(PackRepoDir)\atmel\SAML22_DFP\1.1.62\include + + + Optimize debugging experience (-Og) + True + Maximum (-g3) + True + True + + + libm + + + + + %24(ProjectDir)\Device_Startup + + + True + + -Wl,--defsym,STACK_SIZE=0x280 -Tsaml22n18a_flash.ld + + + %24(PackRepoDir)\ARM\CMSIS\5.0.1\CMSIS\Include\ + %24(PackRepoDir)\atmel\SAML22_DFP\1.1.62\include + + + Default (-g) + + + %24(PackRepoDir)\ARM\CMSIS\5.0.1\CMSIS\Include\ + %24(PackRepoDir)\atmel\SAML22_DFP\1.1.62\include + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + + + + + + + + compile + + + compile + + + + \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config.h new file mode 100644 index 0000000..2ec05fe --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config.h @@ -0,0 +1,114 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_CONFIG_H +#define DEVICE_CONFIG_H + +#include +#include +#include + +/* Enable the interfaces to save code size */ +#define SAM_BA_BOTH_INTERFACES 0 +#define SAM_BA_UART_ONLY 1 +#define SAM_BA_USB_ONLY 2 +#define DEFAULT_APP_START_ADDRESS 0x2000 + + +#if defined(__SAMD21J18A__) + #include "device_config_samd21j18a.h" + #define SAM_BA_INTERFACE SAM_BA_BOTH_INTERFACES + #define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#elif defined (__SAML21J18B__) + #include "device_config_saml21j18b.h" + #define SAM_BA_INTERFACE SAM_BA_BOTH_INTERFACES + #define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#elif defined (__SAML22N18A__) + #include "device_config_saml22n18a.h" + #define SAM_BA_INTERFACE SAM_BA_BOTH_INTERFACES + #define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#elif defined (__SAMC21J18A__) + #include "device_config_samc21j18a.h" + #define SAM_BA_INTERFACE SAM_BA_UART_ONLY + #define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#elif defined (__SAMDA1J16A__) + #include "device_config_samda1j16a.h" + #define SAM_BA_INTERFACE SAM_BA_BOTH_INTERFACES + #define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#elif defined (__SAMD51P20A__) +#include "device_config_same54p20a.h" +#define SAM_BA_INTERFACE SAM_BA_BOTH_INTERFACES +#define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#elif defined (__SAME54P20A__) +#include "device_config_same54p20a.h" +#define SAM_BA_INTERFACE SAM_BA_BOTH_INTERFACES +#define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#else + #error Unknown part number... Define part number and create device_config_xx.h +#endif + +#define SAM_BA_VERSION "v2.18"__DATE__" "__TIME__"\n\r" + +#ifndef SAM_BA_INTERFACE + #define SAM_BA_INTERFACE SAM_BA_UART_ONLY +#endif + +#ifndef APP_START_ADDRESS + #define APP_START_ADDRESS DEFAULT_APP_START_ADDRESS +#endif + +#if SAM_BA_INTERFACE == SAM_BA_BOTH_INTERFACES + #define SAM_BA_UART_INTERFACE_ENABLED true + #define SAM_BA_USB_INTERFACE_ENABLED true +#elif SAM_BA_INTERFACE == SAM_BA_UART_ONLY + #define SAM_BA_UART_INTERFACE_ENABLED true + #define SAM_BA_USB_INTERFACE_ENABLED false +#elif SAM_BA_INTERFACE == SAM_BA_USB_ONLY + #define SAM_BA_UART_INTERFACE_ENABLED false + #define SAM_BA_USB_INTERFACE_ENABLED true +#else + #error Atleast one SAM-BA interface should be enabled +#endif + +#define cpu_irq_enable() \ +do { \ + __DMB(); \ + __enable_irq(); \ +} while (0) + +#define cpu_irq_disable() \ +do { \ + __disable_irq(); \ + __DMB(); \ +} while (0) + +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) + + +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samc21j18a.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samc21j18a.h new file mode 100644 index 0000000..4187337 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samc21j18a.h @@ -0,0 +1,237 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_INCLUDE_H +#define DEVICE_INCLUDE_H + +#include +#include +#include + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #include + #define barrier() __DMB() + #define COMPILER_PRAGMA(arg) _Pragma(#arg) + #define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) + #define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ + #include "sam.h" + #define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) + #define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#else + #error Compiler Macro is unknown +#endif + +#define CPU_FREQUENCY 8000000 +#define FLASH_WAIT_STATES 1 + +#define BOOT_LOAD_PIN PIN_PA28 +#define BOOT_PIN_MASK (1U << (BOOT_LOAD_PIN & 0x1f)) + +#define PINMUX_UNUSED 0xFFFFFFFF +#define BOOT_USART_MODULE SERCOM4 +#define BOOT_USART_MUX_SETTINGS (SERCOM_USART_CTRLA_RXPO(3) | SERCOM_USART_CTRLA_TXPO(1)) +#define BOOT_USART_PAD0 PINMUX_UNUSED +#define BOOT_USART_PAD1 PINMUX_UNUSED +#define BOOT_USART_PAD2 PINMUX_PB10D_SERCOM4_PAD2 +#define BOOT_USART_PAD3 PINMUX_PB11D_SERCOM4_PAD3 + +/* Baud rate 115200 - clock 8MHz -> BAUD value-50436 */ +#define USART_BAUD_REG_VAL_FOR_SAMBA 50436 + +#define NVM_USB_PAD_TRANSN_POS +#define NVM_USB_PAD_TRANSN_SIZE +#define NVM_USB_PAD_TRANSP_POS +#define NVM_USB_PAD_TRANSP_SIZE +#define NVM_USB_PAD_TRIM_POS +#define NVM_USB_PAD_TRIM_SIZE +#define NVM_SW_CALIB_DFLL48M_COARSE_POS +#define NVM_SW_CALIB_DFLL48M_COARSE_SIZE + +#if DEBUG_ENABLE + #define DEBUG_PIN_HIGH port_pin_set_output_level(BOOT_LED, 1) + #define DEBUG_PIN_LOW port_pin_set_output_level(BOOT_LED, 0) +#else + #define DEBUG_PIN_HIGH + #define DEBUG_PIN_LOW +#endif + + + +static inline void enable_sercom_digital_interface_clock(uint8_t inst) +{ + MCLK->APBCMASK.reg |= (1u << (inst + MCLK_APBCMASK_SERCOM0_Pos)); +} +static inline void enable_usb_digital_interface_clock(void) +{ +} +static inline void clock_configuration_for_usb(void) +{ +} + +static inline void clock_configuration_for_boot_usart(void) +{ + uint8_t inst = 0; + Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; + + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + if (BOOT_USART_MODULE == sercom_instances[i]) { + inst = i; + break; + } + } + + enable_sercom_digital_interface_clock(inst); + + /* Set GCLK_GEN0 as source for GCLK_ID_SERCOMx_CORE */ + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK0_Val); + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg |= GCLK_PCHCTRL_CHEN; + /* Wait for clock synchronization */ + while (!(GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg & GCLK_PCHCTRL_CHEN)); +} + +static inline void configure_port_pin(uint32_t gpio_pin, uint32_t pin_mux_position) +{ + Port *const ports[PORT_INST_NUM] = PORT_INSTS; + PortGroup *port; + uint32_t pin_mask, pin_cfg; + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_HWSEL; +} + +static inline void configure_sercom_port_pins(void) +{ + uint32_t gpio_pin, pin_mux_position; + + if(BOOT_USART_PAD0 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD0 >> 16; + pin_mux_position = BOOT_USART_PAD0 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD1 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD1 >> 16; + pin_mux_position = BOOT_USART_PAD1 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD2 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD2 >> 16; + pin_mux_position = BOOT_USART_PAD2 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD3 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD3 >> 16; + pin_mux_position = BOOT_USART_PAD3 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } +} + +static inline bool b_is_bootloader_condition_enabled(void) +{ + volatile PortGroup *boot_port = (volatile PortGroup *)(&(PORT->Group[BOOT_LOAD_PIN / 32])); + volatile uint32_t boot_en; + + /* Enable the input mode in Boot GPIO Pin */ + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + boot_port->OUTSET.reg = BOOT_PIN_MASK; + + /* Read the BOOT_LOAD_PIN status... Reading twice to ensure bus has updated value */ + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + + return(boot_en == 0); +} +static inline void set_flash_wait_states(void) +{ + /* Configure flash wait states */ + NVMCTRL->CTRLB.bit.RWS = FLASH_WAIT_STATES; +} + +static inline void select_clock_source(void) +{ + /* Select Clock source... Enables 8MHz*/ + OSCCTRL->OSC48MDIV.bit.DIV = 5; + + /* Assumed that this executes right after reset, hence other configurations as left with reset defaults*/ +} +static inline void system_init(void) +{ + set_flash_wait_states(); + select_clock_source(); +} +static inline void configure_usb_port_pins(void) +{ + +} +static inline void load_usb_pin_pad_calibration_values(void) +{ + +} + +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + { + sercom->USART.STATUS.reg &= 0xFFF8; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samd21j18a.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samd21j18a.h new file mode 100644 index 0000000..8ab72ec --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samd21j18a.h @@ -0,0 +1,291 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_INCLUDE_H +#define DEVICE_INCLUDE_H + +#include +#include +#include + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #include + #define barrier() __DMB() + #define COMPILER_PRAGMA(arg) _Pragma(#arg) + #define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) + #define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ + #include "sam.h" + #define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) + #define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#else + #error Compiler Macro is unknown +#endif + +#define CPU_FREQUENCY 8000000 +#define FLASH_WAIT_STATES 1 + +#define BOOT_LOAD_PIN PIN_PA15 +#define BOOT_PIN_MASK (1U << (BOOT_LOAD_PIN & 0x1f)) + +#define PINMUX_UNUSED 0xFFFFFFFF +#define BOOT_USART_MODULE SERCOM3 +#define BOOT_USART_MUX_SETTINGS (SERCOM_USART_CTRLA_RXPO(1) | SERCOM_USART_CTRLA_TXPO(0)) +#define BOOT_USART_PAD0 PINMUX_PA22C_SERCOM3_PAD0 +#define BOOT_USART_PAD1 PINMUX_PA23C_SERCOM3_PAD1 +#define BOOT_USART_PAD2 PINMUX_UNUSED +#define BOOT_USART_PAD3 PINMUX_UNUSED + +/* Baud rate 115200 - clock 8MHz -> BAUD value-50436 */ +#define USART_BAUD_REG_VAL_FOR_SAMBA 50436 + +#define NVM_USB_PAD_TRANSN_POS 45 +#define NVM_USB_PAD_TRANSN_SIZE 5 +#define NVM_USB_PAD_TRANSP_POS 50 +#define NVM_USB_PAD_TRANSP_SIZE 5 +#define NVM_USB_PAD_TRIM_POS 55 +#define NVM_USB_PAD_TRIM_SIZE 3 +#define NVM_SW_CALIB_DFLL48M_COARSE_VAL 58 +#define NVM_SW_CALIB_DFLL48M_FINE_VAL 64 + + +#if DEBUG_ENABLE + #define DEBUG_PIN_HIGH port_pin_set_output_level(BOOT_LED, 1) + #define DEBUG_PIN_LOW port_pin_set_output_level(BOOT_LED, 0) +#else + #define DEBUG_PIN_HIGH + #define DEBUG_PIN_LOW +#endif + + + +static inline void enable_sercom_digital_interface_clock(uint8_t inst) +{ + PM->APBCMASK.reg |= (1u << (inst + PM_APBCMASK_SERCOM0_Pos)); +} +static inline void enable_usb_digital_interface_clock(void) +{ + PM->APBBMASK.reg |= PM_APBBMASK_USB; +} +static inline void clock_configuration_for_usb(void) +{ + uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_SW_CALIB_DFLL48M_COARSE_VAL / 32)) + >> (NVM_SW_CALIB_DFLL48M_COARSE_VAL % 32)) & ((1 << 6) - 1); + if (coarse == 0x3f) { + coarse = 0x1f; + } + + uint32_t fine =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_SW_CALIB_DFLL48M_FINE_VAL / 32)) + >> (NVM_SW_CALIB_DFLL48M_FINE_VAL % 32)) & ((1 << 10) - 1); + if (fine == 0x3ff) { + fine = 0x1ff; + } + + SYSCTRL->DFLLCTRL.bit.ONDEMAND = false; + while(!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)); + + SYSCTRL->DFLLMUL.reg = 48000; + SYSCTRL->DFLLVAL.reg = SYSCTRL_DFLLVAL_FINE(fine) | SYSCTRL_DFLLVAL_COARSE(coarse); + SYSCTRL->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_USBCRM | SYSCTRL_DFLLCTRL_CCDIS | SYSCTRL_DFLLCTRL_ENABLE; + + GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(GCLK_CLKCTRL_ID_DFLL48_Val) | GCLK_CLKCTRL_GEN(GCLK_CLKCTRL_GEN_GCLK0_Val) | GCLK_CLKCTRL_CLKEN; + + GCLK->GENCTRL.reg = GCLK_GENCTRL_ID(GCLK_CLKCTRL_GEN_GCLK1_Val); + while(GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY); + GCLK->GENCTRL.reg |= GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_DFLL48M_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY); + + GCLK->CLKCTRL.reg |= GCLK_CLKCTRL_ID(GCLK_CLKCTRL_ID_USB_Val) | GCLK_CLKCTRL_GEN(GCLK_CLKCTRL_GEN_GCLK1_Val) | GCLK_CLKCTRL_CLKEN; +} + +static inline void clock_configuration_for_boot_usart(void) +{ + uint8_t inst = 0; + Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; + + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + if (BOOT_USART_MODULE == sercom_instances[i]) { + inst = i; + break; + } + } + + enable_sercom_digital_interface_clock(inst); + + /* Set GCLK_GEN0 as source for GCLK_ID_SERCOMx_CORE */ + GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(inst+GCLK_CLKCTRL_ID_SERCOM0_CORE_Val) | (GCLK_CLKCTRL_GEN(GCLK_CLKCTRL_GEN_GCLK0_Val)) | GCLK_CLKCTRL_CLKEN; +} + +static inline void configure_port_pin(uint32_t gpio_pin, uint32_t pin_mux_position) +{ + Port *const ports[PORT_INST_NUM] = PORT_INSTS; + PortGroup *port; + uint32_t pin_mask, pin_cfg; + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_HWSEL; +} + +static inline void configure_sercom_port_pins(void) +{ + uint32_t gpio_pin, pin_mux_position; + + if(BOOT_USART_PAD0 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD0 >> 16; + pin_mux_position = BOOT_USART_PAD0 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD1 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD1 >> 16; + pin_mux_position = BOOT_USART_PAD1 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD2 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD2 >> 16; + pin_mux_position = BOOT_USART_PAD2 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD3 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD3 >> 16; + pin_mux_position = BOOT_USART_PAD3 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } +} + +static inline bool b_is_bootloader_condition_enabled(void) +{ + volatile PortGroup *boot_port = (volatile PortGroup *)(&(PORT->Group[BOOT_LOAD_PIN / 32])); + volatile uint32_t boot_en; + + /* Enable the input mode in Boot GPIO Pin */ + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + boot_port->OUTSET.reg = BOOT_PIN_MASK; + + /* Read the BOOT_LOAD_PIN status... Reading twice to ensure bus has updated value */ + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + + return(boot_en == 0); +} +static inline void set_flash_wait_states(void) +{ + /* Configure flash wait states */ + NVMCTRL->CTRLB.bit.RWS = FLASH_WAIT_STATES; +} + +static inline void select_clock_source(void) +{ + /* Select Clock source... Enables 8MHz*/ + SYSCTRL->OSC8M.bit.PRESC = 0; + + /* Assumed that this executes right after reset, hence other configurations as left with reset defaults*/ +} +static inline void system_init(void) +{ + set_flash_wait_states(); + select_clock_source(); +} +static inline void configure_usb_port_pins(void) +{ + configure_port_pin(PIN_PA24G_USB_DM, MUX_PA24G_USB_DM); + configure_port_pin(PIN_PA25G_USB_DP, MUX_PA25G_USB_DP); +} +static inline void load_usb_pin_pad_calibration_values(void) +{ + uint32_t pad_transn, pad_transp, pad_trim; + + /* Load Pad Calibration */ + pad_transn =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSN_POS / 32)) + >> (NVM_USB_PAD_TRANSN_POS % 32)) & ((1 << NVM_USB_PAD_TRANSN_SIZE) - 1); + + if (pad_transn == 0x1F) { + pad_transn = 5; + } + + USB->DEVICE.PADCAL.bit.TRANSN = pad_transn; + + pad_transp =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSP_POS / 32)) + >> (NVM_USB_PAD_TRANSP_POS % 32)) & ((1 << NVM_USB_PAD_TRANSP_SIZE) - 1); + + if (pad_transp == 0x1F) { + pad_transp = 29; + } + + USB->DEVICE.PADCAL.bit.TRANSP = pad_transp; + + pad_trim =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRIM_POS / 32)) + >> (NVM_USB_PAD_TRIM_POS % 32)) & ((1 << NVM_USB_PAD_TRIM_SIZE) - 1); + + if (pad_trim == 0x7) { + pad_trim = 3; + } + + USB->DEVICE.PADCAL.bit.TRIM = pad_trim; +} +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + { + sercom->USART.STATUS.reg &= 0xFFF8; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samda1j16a.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samda1j16a.h new file mode 100644 index 0000000..42c8608 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_samda1j16a.h @@ -0,0 +1,292 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_INCLUDE_H +#define DEVICE_INCLUDE_H + +#include +#include +#include + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #include + #define barrier() __DMB() + #define COMPILER_PRAGMA(arg) _Pragma(#arg) + #define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) + #define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ + #include "sam.h" + #define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) + #define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#else + #error Compiler Macro is unknown +#endif + +#define CPU_FREQUENCY 8000000 +#define FLASH_WAIT_STATES 1 + +#define BOOT_LOAD_PIN PIN_PA15 +#define BOOT_PIN_MASK (1U << (BOOT_LOAD_PIN & 0x1f)) + +#define PINMUX_UNUSED 0xFFFFFFFF +#define BOOT_USART_MODULE SERCOM3 +#define BOOT_USART_MUX_SETTINGS (SERCOM_USART_CTRLA_RXPO(1) | SERCOM_USART_CTRLA_TXPO(0)) +#define BOOT_USART_PAD0 PINMUX_PA22C_SERCOM3_PAD0 +#define BOOT_USART_PAD1 PINMUX_PA23C_SERCOM3_PAD1 +#define BOOT_USART_PAD2 PINMUX_UNUSED +#define BOOT_USART_PAD3 PINMUX_UNUSED + +/* Baud rate 115200 - clock 8MHz -> BAUD value-50436 */ +#define USART_BAUD_REG_VAL_FOR_SAMBA 50436 + +#define NVM_USB_PAD_TRANSN_POS 45 +#define NVM_USB_PAD_TRANSN_SIZE 5 +#define NVM_USB_PAD_TRANSP_POS 50 +#define NVM_USB_PAD_TRANSP_SIZE 5 +#define NVM_USB_PAD_TRIM_POS 55 +#define NVM_USB_PAD_TRIM_SIZE 3 +#define NVM_SW_CALIB_DFLL48M_COARSE_VAL 58 +#define NVM_SW_CALIB_DFLL48M_FINE_VAL 64 + + +#if DEBUG_ENABLE + #define DEBUG_PIN_HIGH port_pin_set_output_level(BOOT_LED, 1) + #define DEBUG_PIN_LOW port_pin_set_output_level(BOOT_LED, 0) +#else + #define DEBUG_PIN_HIGH + #define DEBUG_PIN_LOW +#endif + + + +static inline void enable_sercom_digital_interface_clock(uint8_t inst) +{ + PM->APBCMASK.reg |= (1u << (inst + PM_APBCMASK_SERCOM0_Pos)); +} +static inline void enable_usb_digital_interface_clock(void) +{ + PM->APBBMASK.reg |= PM_APBBMASK_USB; +} +static inline void clock_configuration_for_usb(void) +{ + uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_SW_CALIB_DFLL48M_COARSE_VAL / 32)) + >> (NVM_SW_CALIB_DFLL48M_COARSE_VAL % 32)) & ((1 << 6) - 1); + if (coarse == 0x3f) { + coarse = 0x1f; + } + + uint32_t fine =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_SW_CALIB_DFLL48M_FINE_VAL / 32)) + >> (NVM_SW_CALIB_DFLL48M_FINE_VAL % 32)) & ((1 << 10) - 1); + if (fine == 0x3ff) { + fine = 0x1ff; + } + + SYSCTRL->DFLLCTRL.bit.ONDEMAND = false; + while(!(SYSCTRL->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY)); + + SYSCTRL->DFLLMUL.reg = 48000; + SYSCTRL->DFLLVAL.reg = SYSCTRL_DFLLVAL_FINE(fine) | SYSCTRL_DFLLVAL_COARSE(coarse); + SYSCTRL->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_USBCRM | SYSCTRL_DFLLCTRL_CCDIS | SYSCTRL_DFLLCTRL_ENABLE; + + GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(GCLK_CLKCTRL_ID_DFLL48_Val) | GCLK_CLKCTRL_GEN(GCLK_CLKCTRL_GEN_GCLK0_Val) | GCLK_CLKCTRL_CLKEN; + + GCLK->GENCTRL.reg = GCLK_GENCTRL_ID(GCLK_CLKCTRL_GEN_GCLK1_Val); + while(GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY); + GCLK->GENCTRL.reg |= GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_DFLL48M_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY); + + GCLK->CLKCTRL.reg |= GCLK_CLKCTRL_ID(GCLK_CLKCTRL_ID_USB_Val) | GCLK_CLKCTRL_GEN(GCLK_CLKCTRL_GEN_GCLK1_Val) | GCLK_CLKCTRL_CLKEN; +} + +static inline void clock_configuration_for_boot_usart(void) +{ + uint8_t inst = 0; + Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; + + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + if (BOOT_USART_MODULE == sercom_instances[i]) { + inst = i; + break; + } + } + + enable_sercom_digital_interface_clock(inst); + + /* Set GCLK_GEN0 as source for GCLK_ID_SERCOMx_CORE */ + GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID(inst+GCLK_CLKCTRL_ID_SERCOM0_CORE_Val) | (GCLK_CLKCTRL_GEN(GCLK_CLKCTRL_GEN_GCLK0_Val)) | GCLK_CLKCTRL_CLKEN; +} + +static inline void configure_port_pin(uint32_t gpio_pin, uint32_t pin_mux_position) +{ + Port *const ports[PORT_INST_NUM] = PORT_INSTS; + PortGroup *port; + uint32_t pin_mask, pin_cfg; + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_HWSEL; +} + +static inline void configure_sercom_port_pins(void) +{ + uint32_t gpio_pin, pin_mux_position; + + if(BOOT_USART_PAD0 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD0 >> 16; + pin_mux_position = BOOT_USART_PAD0 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD1 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD1 >> 16; + pin_mux_position = BOOT_USART_PAD1 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD2 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD2 >> 16; + pin_mux_position = BOOT_USART_PAD2 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD3 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD3 >> 16; + pin_mux_position = BOOT_USART_PAD3 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } +} + +static inline bool b_is_bootloader_condition_enabled(void) +{ + volatile PortGroup *boot_port = (volatile PortGroup *)(&(PORT->Group[BOOT_LOAD_PIN / 32])); + volatile uint32_t boot_en; + + /* Enable the input mode in Boot GPIO Pin */ + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + boot_port->OUTSET.reg = BOOT_PIN_MASK; + + /* Read the BOOT_LOAD_PIN status... Reading twice to ensure bus has updated value */ + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + + return(boot_en == 0); +} +static inline void set_flash_wait_states(void) +{ + /* Configure flash wait states */ + NVMCTRL->CTRLB.bit.RWS = FLASH_WAIT_STATES; +} + +static inline void select_clock_source(void) +{ + /* Select Clock source... Enables 8MHz*/ + SYSCTRL->OSC8M.bit.PRESC = 0; + + /* Assumed that this executes right after reset, hence other configurations as left with reset defaults*/ +} +static inline void system_init(void) +{ + WDT->CTRL.bit.ENABLE=0; + set_flash_wait_states(); + select_clock_source(); +} +static inline void configure_usb_port_pins(void) +{ + configure_port_pin(PIN_PA24G_USB_DM, MUX_PA24G_USB_DM); + configure_port_pin(PIN_PA25G_USB_DP, MUX_PA25G_USB_DP); +} +static inline void load_usb_pin_pad_calibration_values(void) +{ + uint32_t pad_transn, pad_transp, pad_trim; + + /* Load Pad Calibration */ + pad_transn =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSN_POS / 32)) + >> (NVM_USB_PAD_TRANSN_POS % 32)) & ((1 << NVM_USB_PAD_TRANSN_SIZE) - 1); + + if (pad_transn == 0x1F) { + pad_transn = 5; + } + + USB->DEVICE.PADCAL.bit.TRANSN = pad_transn; + + pad_transp =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSP_POS / 32)) + >> (NVM_USB_PAD_TRANSP_POS % 32)) & ((1 << NVM_USB_PAD_TRANSP_SIZE) - 1); + + if (pad_transp == 0x1F) { + pad_transp = 29; + } + + USB->DEVICE.PADCAL.bit.TRANSP = pad_transp; + + pad_trim =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRIM_POS / 32)) + >> (NVM_USB_PAD_TRIM_POS % 32)) & ((1 << NVM_USB_PAD_TRIM_SIZE) - 1); + + if (pad_trim == 0x7) { + pad_trim = 3; + } + + USB->DEVICE.PADCAL.bit.TRIM = pad_trim; +} +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + { + sercom->USART.STATUS.reg &= 0xFFF8; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config_same54p20a.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_same54p20a.h new file mode 100644 index 0000000..b338130 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_same54p20a.h @@ -0,0 +1,275 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_INCLUDE_H +#define DEVICE_INCLUDE_H + +#include +#include +#include + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #include + #define barrier() __DMB() + #define COMPILER_PRAGMA(arg) _Pragma(#arg) + #define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) + #define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ + #include "sam.h" + #define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) + #define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#else + #error Compiler Macro is unknown +#endif + +#define CPU_FREQUENCY 48000000 +#define FLASH_WAIT_STATES 1 + +#define BOOT_LOAD_PIN PIN_PB31 +#define BOOT_PIN_MASK (1U << (BOOT_LOAD_PIN & 0x1f)) + +#define PINMUX_UNUSED 0xFFFFFFFF +#define BOOT_USART_MODULE SERCOM2 +#define BOOT_USART_MUX_SETTINGS (SERCOM_USART_CTRLA_RXPO(1) | SERCOM_USART_CTRLA_TXPO(0)) +#define BOOT_USART_PAD0 PINMUX_PB25D_SERCOM2_PAD0 +#define BOOT_USART_PAD1 PINMUX_PB24D_SERCOM2_PAD1 +#define BOOT_USART_PAD2 PINMUX_UNUSED +#define BOOT_USART_PAD3 PINMUX_UNUSED +#define UART_BAUDRATE 115200 +#define UART_SERCOM_APBBMASK MCLK_APBBMASK_SERCOM2 +#define UART_SERCOM_GCLK_ID SERCOM2_GCLK_ID_CORE +/* Baud rate 115200 - clock 8MHz -> BAUD value-50436 */ +#define USART_BAUD_REG_VAL_FOR_SAMBA 63019 + +#define NVM_USB_PAD_TRANSN_POS 32 +#define NVM_USB_PAD_TRANSN_SIZE 5 +#define NVM_USB_PAD_TRANSP_POS 37 +#define NVM_USB_PAD_TRANSP_SIZE 5 +#define NVM_USB_PAD_TRIM_POS 42 +#define NVM_USB_PAD_TRIM_SIZE 3 +#define NVM_SW_CALIB_DFLL48M_COARSE_POS +#define NVM_SW_CALIB_DFLL48M_COARSE_SIZE + +#if DEBUG_ENABLE + #define DEBUG_PIN_HIGH port_pin_set_output_level(BOOT_LED, 1) + #define DEBUG_PIN_LOW port_pin_set_output_level(BOOT_LED, 0) +#else + #define DEBUG_PIN_HIGH + #define DEBUG_PIN_LOW +#endif + + + +static inline void enable_sercom_digital_interface_clock(void) +{ + MCLK->APBBMASK.reg |= ((UART_SERCOM_APBBMASK)); +} +static inline void enable_usb_digital_interface_clock(void) +{ + MCLK->APBBMASK.reg |= MCLK_APBBMASK_USB; + MCLK->AHBMASK.reg |= MCLK_AHBMASK_USB; +} +static inline void clock_configuration_for_usb(void) +{ + GCLK->PCHCTRL[USB_GCLK_ID].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK3_Val) | GCLK_PCHCTRL_CHEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK3_Val)); +} + +static inline void clock_configuration_for_boot_usart(void) +{ + enable_sercom_digital_interface_clock(); + + /* Set GCLK_GEN0 as source for GCLK_ID_SERCOMx_CORE */ + GCLK->PCHCTRL[UART_SERCOM_GCLK_ID].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK0_Val); + GCLK->PCHCTRL[UART_SERCOM_GCLK_ID].reg |= GCLK_PCHCTRL_CHEN; + /* Wait for clock synchronization */ + while (!(GCLK->PCHCTRL[UART_SERCOM_GCLK_ID].reg & GCLK_PCHCTRL_CHEN)); +} + +static inline void configure_port_pin(uint32_t gpio_pin, uint32_t pin_mux_position) +{ + Port *const ports[PORT_INST_NUM] = PORT_INSTS; + PortGroup *port; + uint32_t pin_mask, pin_cfg; + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_HWSEL; +} + +static inline void configure_sercom_port_pins(void) +{ + uint32_t gpio_pin, pin_mux_position; + + if(BOOT_USART_PAD0 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD0 >> 16; + pin_mux_position = BOOT_USART_PAD0 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD1 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD1 >> 16; + pin_mux_position = BOOT_USART_PAD1 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD2 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD2 >> 16; + pin_mux_position = BOOT_USART_PAD2 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD3 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD3 >> 16; + pin_mux_position = BOOT_USART_PAD3 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } +} + +static inline bool b_is_bootloader_condition_enabled(void) +{ + volatile PortGroup *boot_port = (volatile PortGroup *)(&(PORT->Group[BOOT_LOAD_PIN / 32])); + bool boot_en; + + /* Enable the input mode in Boot GPIO Pin */ + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + boot_port->OUTSET.reg = BOOT_PIN_MASK; + + /* Read the BOOT_LOAD_PIN status */ + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + + return(boot_en == 0); +} +static inline void set_flash_wait_states(void) +{ + /* Configure flash wait states */ + //NVMCTRL->CTRLA.bit.AUTOWS = 1; +} + +static inline void select_clock_source(void) +{ + OSC32KCTRL->XOSC32K.reg = OSC32KCTRL_XOSC32K_STARTUP(0) | OSC32KCTRL_XOSC32K_XTALEN | OSC32KCTRL_XOSC32K_EN1K | OSC32KCTRL_XOSC32K_EN32K | OSC32KCTRL_XOSC32K_ENABLE; + while(!(OSC32KCTRL->STATUS.reg & OSC32KCTRL_STATUS_XOSC32KRDY)); + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK1_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_XOSC32K_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); + + GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK1_Val) | GCLK_PCHCTRL_CHEN; + while (!(GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg & GCLK_PCHCTRL_CHEN)); + + OSCCTRL->DFLLCTRLA.bit.ONDEMAND = false; + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + + OSCCTRL->DFLLMUL.reg = OSCCTRL_DFLLMUL_MUL(48000) | OSCCTRL_DFLLMUL_FSTEP(1) | OSCCTRL_DFLLMUL_CSTEP(1); + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + OSCCTRL->DFLLCTRLB.reg |= OSCCTRL_DFLLCTRLB_MODE | OSCCTRL_DFLLCTRLB_CCDIS | OSCCTRL_DFLLCTRLB_USBCRM; + OSCCTRL->DFLLCTRLA.reg |= OSCCTRL_DFLLCTRLA_ENABLE; + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + PORT->Group[1].PINCFG[17].reg = 1; + // Enable peripheral function 12 for PB14, refer chapter I/O Multiplexing in the device datasheet + PORT->Group[1].PMUX[8].bit.PMUXO = 12; + PORT->Group[1].PMUX[8].bit.PMUXE = 12; + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK3_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_DFLL_Val) | GCLK_GENCTRL_GENEN |GCLK_GENCTRL_OE; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK3_Val)); + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK0_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_DFLL_Val) | GCLK_GENCTRL_GENEN |GCLK_GENCTRL_OE; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK0_Val)); +} +static inline void system_init(void) +{ + set_flash_wait_states(); + select_clock_source(); +} +static inline void configure_usb_port_pins(void) +{ + configure_port_pin(PIN_PA24H_USB_DM, MUX_PA24H_USB_DM); + configure_port_pin(PIN_PA25H_USB_DP, MUX_PA25H_USB_DP); +} +static inline void load_usb_pin_pad_calibration_values(void) +{ + uint32_t pad_transn =( *((uint32_t *)(NVMCTRL_SW0) + + (NVM_USB_PAD_TRANSN_POS / 32)) + >> (NVM_USB_PAD_TRANSN_POS % 32)) + & ((1 << NVM_USB_PAD_TRANSN_SIZE) - 1); + uint32_t pad_transp =( *((uint32_t *)(NVMCTRL_SW0) + + (NVM_USB_PAD_TRANSP_POS / 32)) + >> (NVM_USB_PAD_TRANSP_POS % 32)) + & ((1 << NVM_USB_PAD_TRANSP_SIZE) - 1); + uint32_t pad_trim =( *((uint32_t *)(NVMCTRL_SW0) + + (NVM_USB_PAD_TRIM_POS / 32)) + >> (NVM_USB_PAD_TRIM_POS % 32)) + & ((1 << NVM_USB_PAD_TRIM_SIZE) - 1); + if (pad_transn == 0 || pad_transn == 0x1F) { + pad_transn = 9; + } + if (pad_transp == 0 || pad_transp == 0x1F) { + pad_transp = 25; + } + if (pad_trim == 0 || pad_trim == 0x7) { + pad_trim = 6; + } + USB->DEVICE.PADCAL.reg = USB_PADCAL_TRANSN(pad_transn) | + USB_PADCAL_TRANSP(pad_transp) | USB_PADCAL_TRIM(pad_trim); +} + +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + { + sercom->USART.STATUS.reg &= 0xFFF8; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config_saml21j18b.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_saml21j18b.h new file mode 100644 index 0000000..f92b9d0 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_saml21j18b.h @@ -0,0 +1,309 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_INCLUDE_H +#define DEVICE_INCLUDE_H + +#include +#include +#include + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #include + #define barrier() __DMB() + #define COMPILER_PRAGMA(arg) _Pragma(#arg) + #define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) + #define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ + #include "sam.h" + #define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) + #define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#else + #error Compiler Macro is unknown +#endif + +#define CPU_FREQUENCY 8000000 +#define FLASH_WAIT_STATES 1 + +#define BOOT_LOAD_PIN PIN_PA02 +#define BOOT_PIN_MASK (1U << (BOOT_LOAD_PIN & 0x1f)) + +#define PINMUX_UNUSED 0xFFFFFFFF +#define BOOT_USART_MODULE SERCOM3 +#define BOOT_USART_MUX_SETTINGS (SERCOM_USART_CTRLA_RXPO(1) | SERCOM_USART_CTRLA_TXPO(0)) +#define BOOT_USART_PAD0 PINMUX_PA22C_SERCOM3_PAD0 +#define BOOT_USART_PAD1 PINMUX_PA23C_SERCOM3_PAD1 +#define BOOT_USART_PAD2 PINMUX_UNUSED +#define BOOT_USART_PAD3 PINMUX_UNUSED + +/* Baud rate 115200 - clock 8MHz -> BAUD value-50436 */ +#define USART_BAUD_REG_VAL_FOR_SAMBA 50436 + +#define NVM_USB_PAD_TRANSN_POS 13 +#define NVM_USB_PAD_TRANSN_SIZE 5 +#define NVM_USB_PAD_TRANSP_POS 18 +#define NVM_USB_PAD_TRANSP_SIZE 5 +#define NVM_USB_PAD_TRIM_POS 23 +#define NVM_USB_PAD_TRIM_SIZE 3 +#define NVM_SW_CALIB_DFLL48M_COARSE_POS 26 +#define NVM_SW_CALIB_DFLL48M_COARSE_SIZE 6 + +#if DEBUG_ENABLE + #define DEBUG_PIN_HIGH port_pin_set_output_level(BOOT_LED, 1) + #define DEBUG_PIN_LOW port_pin_set_output_level(BOOT_LED, 0) +#else + #define DEBUG_PIN_HIGH + #define DEBUG_PIN_LOW +#endif + + + +static inline void enable_sercom_digital_interface_clock(uint8_t inst) +{ + MCLK->APBCMASK.reg |= (1u << (inst + MCLK_APBCMASK_SERCOM0_Pos)); +} +static inline void enable_usb_digital_interface_clock(void) +{ + MCLK->APBBMASK.reg |= MCLK_APBBMASK_USB; +} +static inline void clock_configuration_for_usb(void) +{ + OSC32KCTRL->XOSC32K.reg = OSC32KCTRL_OSC32K_STARTUP(4) | OSC32KCTRL_OSC32K_EN1K | OSC32KCTRL_OSC32K_EN32K | OSC32KCTRL_OSC32K_ENABLE; + while(!(OSC32KCTRL->STATUS.reg & OSC32KCTRL_STATUS_XOSC32KRDY)); + + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK1_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_XOSC32K_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); + + GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK1_Val) | GCLK_PCHCTRL_CHEN; + while (!(GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg & GCLK_PCHCTRL_CHEN)); + + uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP5) + (NVM_SW_CALIB_DFLL48M_COARSE_POS / 32)) + >> (NVM_SW_CALIB_DFLL48M_COARSE_POS % 32)) & ((1 << NVM_SW_CALIB_DFLL48M_COARSE_SIZE) - 1); + /* In some revision chip, the Calibration value is not correct */ + if (coarse == 0x3f) { + coarse = 0x1f; + } + + OSCCTRL->DFLLCTRL.bit.ONDEMAND = false; + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + + OSCCTRL->DFLLMUL.reg = OSCCTRL_DFLLMUL_MUL(48000000/32768) | OSCCTRL_DFLLMUL_FSTEP(0xFF/8) | OSCCTRL_DFLLMUL_CSTEP(0x1F/8); + OSCCTRL->DFLLVAL.reg = OSCCTRL_DFLLVAL_FINE(512) | OSCCTRL_DFLLVAL_COARSE(coarse); + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + OSCCTRL->DFLLCTRL.reg = OSCCTRL_DFLLCTRL_MODE | OSCCTRL_DFLLCTRL_ENABLE; + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK3_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_DFLL48M_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK3_Val)); + + GCLK->PCHCTRL[USB_GCLK_ID].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK3_Val) | GCLK_PCHCTRL_CHEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); +} + +static inline void clock_configuration_for_boot_usart(void) +{ + uint8_t inst = 0; + Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; + + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + if (BOOT_USART_MODULE == sercom_instances[i]) { + inst = i; + break; + } + } + + enable_sercom_digital_interface_clock(inst); + + /* Set GCLK_GEN0 as source for GCLK_ID_SERCOMx_CORE */ + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK0_Val); + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg |= GCLK_PCHCTRL_CHEN; + /* Wait for clock synchronization */ + while (!(GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg & GCLK_PCHCTRL_CHEN)); +} + +static inline void configure_port_pin(uint32_t gpio_pin, uint32_t pin_mux_position) +{ + Port *const ports[PORT_INST_NUM] = PORT_INSTS; + PortGroup *port; + uint32_t pin_mask, pin_cfg; + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_HWSEL; +} + +static inline void configure_sercom_port_pins(void) +{ + uint32_t gpio_pin, pin_mux_position; + + if(BOOT_USART_PAD0 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD0 >> 16; + pin_mux_position = BOOT_USART_PAD0 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD1 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD1 >> 16; + pin_mux_position = BOOT_USART_PAD1 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD2 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD2 >> 16; + pin_mux_position = BOOT_USART_PAD2 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD3 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD3 >> 16; + pin_mux_position = BOOT_USART_PAD3 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } +} + +static inline bool b_is_bootloader_condition_enabled(void) +{ + volatile PortGroup *boot_port = (volatile PortGroup *)(&(PORT->Group[BOOT_LOAD_PIN / 32])); + volatile uint32_t boot_en; + + /* Enable the input mode in Boot GPIO Pin */ + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + boot_port->OUTSET.reg = BOOT_PIN_MASK; + + /* Read the BOOT_LOAD_PIN status... Reading twice to ensure bus has updated value */ + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + + return(boot_en == 0); +} +static inline void set_flash_wait_states(void) +{ + /* Configure flash wait states */ + NVMCTRL->CTRLB.bit.RWS = FLASH_WAIT_STATES; +} + +static inline void select_clock_source(void) +{ + /* Select Clock source... Enables 8MHz*/ + OSCCTRL->OSC16MCTRL.bit.FSEL = 1; + + /* Clear performance level status */ + PM->INTFLAG.reg = PM_INTFLAG_PLRDY; + + /* Switch performance level */ + PM->PLCFG.reg = PM_PLCFG_PLSEL_PL2; + + /* Waiting performance level ready */ + while (!PM->INTFLAG.reg) { + ; + } + + + /* Assumed that this executes right after reset, hence other configurations as left with reset defaults*/ +} +static inline void system_init(void) +{ + set_flash_wait_states(); + select_clock_source(); +} +static inline void configure_usb_port_pins(void) +{ + configure_port_pin(PIN_PA24G_USB_DM, MUX_PA24G_USB_DM); + configure_port_pin(PIN_PA25G_USB_DP, MUX_PA25G_USB_DP); +} +static inline void load_usb_pin_pad_calibration_values(void) +{ + uint32_t pad_transn, pad_transp, pad_trim; + + /* Load Pad Calibration */ + pad_transn =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSN_POS / 32)) + >> (NVM_USB_PAD_TRANSN_POS % 32)) & ((1 << NVM_USB_PAD_TRANSN_SIZE) - 1); + + if (pad_transn == 0x1F) { + pad_transn = 5; + } + + USB->DEVICE.PADCAL.bit.TRANSN = pad_transn; + + pad_transp =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSP_POS / 32)) + >> (NVM_USB_PAD_TRANSP_POS % 32)) & ((1 << NVM_USB_PAD_TRANSP_SIZE) - 1); + + if (pad_transp == 0x1F) { + pad_transp = 29; + } + + USB->DEVICE.PADCAL.bit.TRANSP = pad_transp; + + pad_trim =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRIM_POS / 32)) + >> (NVM_USB_PAD_TRIM_POS % 32)) & ((1 << NVM_USB_PAD_TRIM_SIZE) - 1); + + if (pad_trim == 0x7) { + pad_trim = 3; + } + + USB->DEVICE.PADCAL.bit.TRIM = pad_trim; +} + +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + { + sercom->USART.STATUS.reg &= 0xFFF8; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/device_config/device_config_saml22n18a.h b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_saml22n18a.h new file mode 100644 index 0000000..c41ddcd --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/device_config/device_config_saml22n18a.h @@ -0,0 +1,309 @@ +/* ---------------------------------------------------------------------------- + * SAM Software Package License + * ---------------------------------------------------------------------------- + * Copyright (c) 2011-2014, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following condition is met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL 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. + * ---------------------------------------------------------------------------- + */ + +#ifndef DEVICE_INCLUDE_H +#define DEVICE_INCLUDE_H + +#include +#include +#include + +#if defined ( __ICCARM__ ) /* IAR Ewarm 5.41+ */ + #include + #define barrier() __DMB() + #define COMPILER_PRAGMA(arg) _Pragma(#arg) + #define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a) + #define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4) +#elif defined ( __GNUC__ ) /* GCC CS3 2009q3-68 */ + #include "sam.h" + #define COMPILER_ALIGNED(a) __attribute__((__aligned__(a))) + #define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4))) +#else + #error Compiler Macro is unknown +#endif + +#define CPU_FREQUENCY 8000000 +#define FLASH_WAIT_STATES 1 + +#define BOOT_LOAD_PIN PIN_PC01 +#define BOOT_PIN_MASK (1U << (BOOT_LOAD_PIN & 0x1f)) + +#define PINMUX_UNUSED 0xFFFFFFFF +#define BOOT_USART_MODULE SERCOM4 +#define BOOT_USART_MUX_SETTINGS (SERCOM_USART_CTRLA_RXPO(3) | SERCOM_USART_CTRLA_TXPO(1)) +#define BOOT_USART_PAD0 PINMUX_UNUSED +#define BOOT_USART_PAD1 PINMUX_UNUSED +#define BOOT_USART_PAD2 PINMUX_PC24D_SERCOM4_PAD2 +#define BOOT_USART_PAD3 PINMUX_PC25D_SERCOM4_PAD3 + +/* Baud rate 115200 - clock 8MHz -> BAUD value-50436 */ +#define USART_BAUD_REG_VAL_FOR_SAMBA 50436 + +#define NVM_USB_PAD_TRANSN_POS 13 +#define NVM_USB_PAD_TRANSN_SIZE 5 +#define NVM_USB_PAD_TRANSP_POS 18 +#define NVM_USB_PAD_TRANSP_SIZE 5 +#define NVM_USB_PAD_TRIM_POS 23 +#define NVM_USB_PAD_TRIM_SIZE 3 +#define NVM_SW_CALIB_DFLL48M_COARSE_POS 26 +#define NVM_SW_CALIB_DFLL48M_COARSE_SIZE 6 + +#if DEBUG_ENABLE + #define DEBUG_PIN_HIGH port_pin_set_output_level(BOOT_LED, 1) + #define DEBUG_PIN_LOW port_pin_set_output_level(BOOT_LED, 0) +#else + #define DEBUG_PIN_HIGH + #define DEBUG_PIN_LOW +#endif + + + +static inline void enable_sercom_digital_interface_clock(uint8_t inst) +{ + MCLK->APBCMASK.reg |= (1u << (inst + MCLK_APBCMASK_SERCOM0_Pos)); +} +static inline void enable_usb_digital_interface_clock(void) +{ + MCLK->APBBMASK.reg |= MCLK_APBBMASK_USB; +} +static inline void clock_configuration_for_usb(void) +{ + OSC32KCTRL->XOSC32K.reg = OSC32KCTRL_XOSC32K_STARTUP(4) | OSC32KCTRL_XOSC32K_RUNSTDBY | OSC32KCTRL_XOSC32K_EN32K | OSC32KCTRL_XOSC32K_XTALEN | OSC32KCTRL_XOSC32K_ENABLE; + while(!(OSC32KCTRL->STATUS.reg & OSC32KCTRL_STATUS_XOSC32KRDY)); + + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK1_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_OSC32K_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); + + GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK1_Val) | GCLK_PCHCTRL_CHEN; + while (!(GCLK->PCHCTRL[OSCCTRL_GCLK_ID_DFLL48].reg & GCLK_PCHCTRL_CHEN)); + + uint32_t coarse =( *((uint32_t *)(NVMCTRL_OTP5) + (NVM_SW_CALIB_DFLL48M_COARSE_POS / 32)) + >> (NVM_SW_CALIB_DFLL48M_COARSE_POS % 32)) & ((1 << NVM_SW_CALIB_DFLL48M_COARSE_SIZE) - 1); + /* In some revision chip, the Calibration value is not correct */ + if (coarse == 0x3f) { + coarse = 0x1f; + } + + OSCCTRL->DFLLCTRL.bit.ONDEMAND = false; + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + + OSCCTRL->DFLLMUL.reg = OSCCTRL_DFLLMUL_MUL(48000000/32768) | OSCCTRL_DFLLMUL_FSTEP(0xFF/8) | OSCCTRL_DFLLMUL_CSTEP(0x1F/8); + OSCCTRL->DFLLVAL.reg = OSCCTRL_DFLLVAL_FINE(512) | OSCCTRL_DFLLVAL_COARSE(coarse); + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + OSCCTRL->DFLLCTRL.reg = OSCCTRL_DFLLCTRL_MODE | OSCCTRL_DFLLCTRL_ENABLE; + while (!(OSCCTRL->STATUS.reg & OSCCTRL_STATUS_DFLLRDY)); + + GCLK->GENCTRL[GCLK_PCHCTRL_GEN_GCLK3_Val].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_OSC16M_Val) | GCLK_GENCTRL_GENEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK3_Val)); + + GCLK->PCHCTRL[USB_GCLK_ID].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK3_Val) | GCLK_PCHCTRL_CHEN; + while(GCLK->SYNCBUSY.reg & GCLK_SYNCBUSY_GENCTRL(GCLK_PCHCTRL_GEN_GCLK1_Val)); +} + +static inline void clock_configuration_for_boot_usart(void) +{ + uint8_t inst = 0; + Sercom *sercom_instances[SERCOM_INST_NUM] = SERCOM_INSTS; + + for (uint32_t i = 0; i < SERCOM_INST_NUM; i++) { + if (BOOT_USART_MODULE == sercom_instances[i]) { + inst = i; + break; + } + } + + enable_sercom_digital_interface_clock(inst); + + /* Set GCLK_GEN0 as source for GCLK_ID_SERCOMx_CORE */ + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg = GCLK_PCHCTRL_GEN(GCLK_PCHCTRL_GEN_GCLK0_Val); + GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg |= GCLK_PCHCTRL_CHEN; + /* Wait for clock synchronization */ + while (!(GCLK->PCHCTRL[inst+SERCOM0_GCLK_ID_CORE].reg & GCLK_PCHCTRL_CHEN)); +} + +static inline void configure_port_pin(uint32_t gpio_pin, uint32_t pin_mux_position) +{ + Port *const ports[PORT_INST_NUM] = PORT_INSTS; + PortGroup *port; + uint32_t pin_mask, pin_cfg; + + port = &(ports[gpio_pin/128]->Group[gpio_pin/32]); + pin_cfg = PORT_WRCONFIG_PMUXEN | (pin_mux_position << PORT_WRCONFIG_PMUX_Pos) | PORT_WRCONFIG_INEN; + pin_mask = 1L << ((gpio_pin) % 32); + + port->WRCONFIG.reg = ((pin_mask & 0xFFFF) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG; + port->WRCONFIG.reg = ((pin_mask >> 16) << PORT_WRCONFIG_PINMASK_Pos) | + pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_HWSEL; +} + +static inline void configure_sercom_port_pins(void) +{ + uint32_t gpio_pin, pin_mux_position; + + if(BOOT_USART_PAD0 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD0 >> 16; + pin_mux_position = BOOT_USART_PAD0 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD1 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD1 >> 16; + pin_mux_position = BOOT_USART_PAD1 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD2 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD2 >> 16; + pin_mux_position = BOOT_USART_PAD2 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } + + if(BOOT_USART_PAD3 != PINMUX_UNUSED){ + gpio_pin = BOOT_USART_PAD3 >> 16; + pin_mux_position = BOOT_USART_PAD3 & 0xFFFF; + configure_port_pin(gpio_pin, pin_mux_position); + } +} + +static inline bool b_is_bootloader_condition_enabled(void) +{ + volatile PortGroup *boot_port = (volatile PortGroup *)(&(PORT->Group[BOOT_LOAD_PIN / 32])); + volatile uint32_t boot_en; + + /* Enable the input mode in Boot GPIO Pin */ + boot_port->DIRCLR.reg = BOOT_PIN_MASK; + boot_port->PINCFG[BOOT_LOAD_PIN & 0x1F].reg = PORT_PINCFG_INEN | PORT_PINCFG_PULLEN; + boot_port->OUTSET.reg = BOOT_PIN_MASK; + + /* Read the BOOT_LOAD_PIN status... Reading twice to ensure bus has updated value */ + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + boot_en = (boot_port->IN.reg) & BOOT_PIN_MASK; + + return(boot_en == 0); +} +static inline void set_flash_wait_states(void) +{ + /* Configure flash wait states */ + NVMCTRL->CTRLB.bit.RWS = FLASH_WAIT_STATES; +} + +static inline void select_clock_source(void) +{ + /* Select Clock source... Enables 8MHz*/ + OSCCTRL->OSC16MCTRL.bit.FSEL = 1; + + /* Clear performance level status */ + PM->INTFLAG.reg = PM_INTFLAG_PLRDY; + + /* Switch performance level */ + PM->PLCFG.reg = PM_PLCFG_PLSEL_PL2; + + /* Waiting performance level ready */ + while (!PM->INTFLAG.reg) { + ; + } + + + /* Assumed that this executes right after reset, hence other configurations as left with reset defaults*/ +} +static inline void system_init(void) +{ + set_flash_wait_states(); + select_clock_source(); +} +static inline void configure_usb_port_pins(void) +{ + configure_port_pin(PIN_PA24G_USB_DM, MUX_PA24G_USB_DM); + configure_port_pin(PIN_PA25G_USB_DP, MUX_PA25G_USB_DP); +} +static inline void load_usb_pin_pad_calibration_values(void) +{ + uint32_t pad_transn, pad_transp, pad_trim; + + /* Load Pad Calibration */ + pad_transn =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSN_POS / 32)) + >> (NVM_USB_PAD_TRANSN_POS % 32)) & ((1 << NVM_USB_PAD_TRANSN_SIZE) - 1); + + if (pad_transn == 0x1F) { + pad_transn = 5; + } + + USB->DEVICE.PADCAL.bit.TRANSN = pad_transn; + + pad_transp =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRANSP_POS / 32)) + >> (NVM_USB_PAD_TRANSP_POS % 32)) & ((1 << NVM_USB_PAD_TRANSP_SIZE) - 1); + + if (pad_transp == 0x1F) { + pad_transp = 29; + } + + USB->DEVICE.PADCAL.bit.TRANSP = pad_transp; + + pad_trim =( *((uint32_t *)(NVMCTRL_OTP4) + (NVM_USB_PAD_TRIM_POS / 32)) + >> (NVM_USB_PAD_TRIM_POS % 32)) & ((1 << NVM_USB_PAD_TRIM_SIZE) - 1); + + if (pad_trim == 0x7) { + pad_trim = 3; + } + + USB->DEVICE.PADCAL.bit.TRIM = pad_trim; +} + +static inline void wait_for_usart_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.ENABLE); +} + +static inline void wait_for_usart_swrst_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST); +} + +static inline void wait_for_usart_swrst_enable_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.SWRST || sercom->USART.SYNCBUSY.bit.ENABLE); +} +static inline void wait_for_usart_ctrlb_sync(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.bit.CTRLB); +} +static inline void wait_for_uart_syncbusy_clear(Sercom* sercom) +{ + while(sercom->USART.SYNCBUSY.reg); +} +static inline void uart_read_clear_errors(Sercom* sercom) +{ + /* Check for errors */ + if((uint8_t)(sercom->USART.STATUS.reg & SERCOM_USART_STATUS_MASK)) + { + sercom->USART.STATUS.reg &= 0xFFF8; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/drivers/cdc_enumerate.c b/SAM-BA_MONITOR_ROMLESS/drivers/cdc_enumerate.c new file mode 100644 index 0000000..bc6de5f --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/drivers/cdc_enumerate.c @@ -0,0 +1,636 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#include +#include "cdc_enumerate.h" +#include "device_config.h" + +#if SAM_BA_USB_INTERFACE_ENABLED + +COMPILER_WORD_ALIGNED UsbDeviceDescriptor usb_endpoint_table[MAX_EP]; +COMPILER_WORD_ALIGNED uint8_t udd_ep_out_cache_buffer[2][64]; //1 for CTRL, 1 for BULK +COMPILER_WORD_ALIGNED uint8_t udd_ep_in_cache_buffer[2][64]; //1 for CTRL, 1 for BULK + +COMPILER_WORD_ALIGNED +const char devDescriptor[] = { + /* Device descriptor */ + 0x12, // bLength + 0x01, // bDescriptorType + 0x10, // bcdUSBL + 0x01, // + 0x02, // bDeviceClass: CDC class code + 0x00, // bDeviceSubclass: CDC class sub code + 0x00, // bDeviceProtocol: CDC Device protocol + 0x40, // bMaxPacketSize0 + 0xEB, // idVendorL + 0x03, // + 0x24, // idProductL + 0x61, // + 0x10, // bcdDeviceL + 0x01, // + 0x00, // iManufacturer // 0x01 + 0x00, // iProduct + 0x00, // SerialNumber + 0x01 // bNumConfigs +}; + +COMPILER_WORD_ALIGNED +char cfgDescriptor[] = { + /* ============== CONFIGURATION 1 =========== */ + /* Configuration 1 descriptor */ + 0x09, // CbLength + 0x02, // CbDescriptorType + 0x43, // CwTotalLength 2 EP + Control + 0x00, + 0x02, // CbNumInterfaces + 0x01, // CbConfigurationValue + 0x00, // CiConfiguration + 0xC0, // CbmAttributes 0xA0 + 0x00, // CMaxPower + + /* Communication Class Interface Descriptor Requirement */ + 0x09, // bLength + 0x04, // bDescriptorType + 0x00, // bInterfaceNumber + 0x00, // bAlternateSetting + 0x01, // bNumEndpoints + 0x02, // bInterfaceClass + 0x02, // bInterfaceSubclass + 0x00, // bInterfaceProtocol + 0x00, // iInterface + + /* Header Functional Descriptor */ + 0x05, // bFunction Length + 0x24, // bDescriptor type: CS_INTERFACE + 0x00, // bDescriptor subtype: Header Func Desc + 0x10, // bcdCDC:1.1 + 0x01, + + /* ACM Functional Descriptor */ + 0x04, // bFunctionLength + 0x24, // bDescriptor Type: CS_INTERFACE + 0x02, // bDescriptor Subtype: ACM Func Desc + 0x00, // bmCapabilities + + /* Union Functional Descriptor */ + 0x05, // bFunctionLength + 0x24, // bDescriptorType: CS_INTERFACE + 0x06, // bDescriptor Subtype: Union Func Desc + 0x00, // bMasterInterface: Communication Class Interface + 0x01, // bSlaveInterface0: Data Class Interface + + /* Call Management Functional Descriptor */ + 0x05, // bFunctionLength + 0x24, // bDescriptor Type: CS_INTERFACE + 0x01, // bDescriptor Subtype: Call Management Func Desc + 0x00, // bmCapabilities: D1 + D0 + 0x01, // bDataInterface: Data Class Interface 1 + + /* Endpoint 1 descriptor */ + 0x07, // bLength + 0x05, // bDescriptorType + 0x83, // bEndpointAddress, Endpoint 03 - IN + 0x03, // bmAttributes INT + 0x08, // wMaxPacketSize + 0x00, + 0xFF, // bInterval + + /* Data Class Interface Descriptor Requirement */ + 0x09, // bLength + 0x04, // bDescriptorType + 0x01, // bInterfaceNumber + 0x00, // bAlternateSetting + 0x02, // bNumEndpoints + 0x0A, // bInterfaceClass + 0x00, // bInterfaceSubclass + 0x00, // bInterfaceProtocol + 0x00, // iInterface + + /* First alternate setting */ + /* Endpoint 1 descriptor */ + 0x07, // bLength + 0x05, // bDescriptorType + 0x81, // bEndpointAddress, Endpoint 01 - IN + 0x02, // bmAttributes BULK + USB_EP_IN_SIZE, // wMaxPacketSize + 0x00, + 0x00, // bInterval + + /* Endpoint 2 descriptor */ + 0x07, // bLength + 0x05, // bDescriptorType + 0x02, // bEndpointAddress, Endpoint 02 - OUT + 0x02, // bmAttributes BULK + USB_EP_OUT_SIZE, // wMaxPacketSize + 0x00, + 0x00 // bInterval +}; + + +static usb_cdc_line_coding_t line_coding = { + 115200, // baudrate + 0, // 1 Stop Bit + 0, // None Parity + 8 // 8 Data bits +}; + +USB_CDC pCdc; + +/* USB standard request code */ +#define STD_GET_STATUS_ZERO 0x0080 +#define STD_GET_STATUS_INTERFACE 0x0081 +#define STD_GET_STATUS_ENDPOINT 0x0082 + +#define STD_CLEAR_FEATURE_ZERO 0x0100 +#define STD_CLEAR_FEATURE_INTERFACE 0x0101 +#define STD_CLEAR_FEATURE_ENDPOINT 0x0102 + +#define STD_SET_FEATURE_ZERO 0x0300 +#define STD_SET_FEATURE_INTERFACE 0x0301 +#define STD_SET_FEATURE_ENDPOINT 0x0302 + +#define STD_SET_ADDRESS 0x0500 +#define STD_GET_DESCRIPTOR 0x0680 +#define STD_SET_DESCRIPTOR 0x0700 +#define STD_GET_CONFIGURATION 0x0880 +#define STD_SET_CONFIGURATION 0x0900 +#define STD_GET_INTERFACE 0x0A81 +#define STD_SET_INTERFACE 0x0B01 +#define STD_SYNCH_FRAME 0x0C82 + +/* CDC Class Specific Request Code */ +#define GET_LINE_CODING 0x21A1 +#define SET_LINE_CODING 0x2021 +#define SET_CONTROL_LINE_STATE 0x2221 + + +static void AT91F_CDC_Enumerate(P_USB_CDC pCdc); + + +/** + * \fn AT91F_InitUSB + * + * \brief Initializes USB + */ +void AT91F_InitUSB(void) +{ + + enable_usb_digital_interface_clock(); + configure_usb_port_pins(); + + /* Reset */ + USB->DEVICE.CTRLA.bit.SWRST = 1; + while (USB->DEVICE.SYNCBUSY.bit.SWRST) { + /* Sync wait */ + } + + load_usb_pin_pad_calibration_values(); + + /* Set the configuration */ + /* Set mode to Device mode */ + USB->DEVICE.CTRLA.bit.MODE = 0; + /* Enable Run in Standby */ + USB->DEVICE.CTRLA.bit.RUNSTDBY = true; + /* Set the descriptor address */ + USB->DEVICE.DESCADD.reg = (uint32_t)(&usb_endpoint_table[0]); + /* Set speed configuration to Full speed */ + USB->DEVICE.CTRLB.bit.SPDCONF = USB_DEVICE_CTRLB_SPDCONF_FS_Val; + /* Attach to the USB host */ + USB->DEVICE.CTRLB.reg &= ~USB_DEVICE_CTRLB_DETACH; + + /* Initialize endpoint table RAM location to a known value 0 */ + //memset((uint8_t *)(&usb_endpoint_table[0]), 0, sizeof(usb_endpoint_table)); + uint8_t* pdata = (uint8_t *)(&usb_endpoint_table[0]); + for(uint32_t u32_index=0; u32_index < sizeof(usb_endpoint_table); u32_index++) + { + *pdata++ = 0; + } +} + +//*---------------------------------------------------------------------------- +//* \fn AT91F_CDC_Open +//* \brief +//*---------------------------------------------------------------------------- +P_USB_CDC AT91F_CDC_Open(P_USB_CDC pCdc,Usb *pUsb) +{ + pCdc->pUsb = pUsb; + pCdc->currentConfiguration = 0; + pCdc->currentConnection = 0; + pCdc->IsConfigured = USB_IsConfigured; + pCdc->Write = USB_Write; + pCdc->Read = USB_Read; + pCdc->pUsb->DEVICE.CTRLA.bit.ENABLE = true; + return pCdc; +} + +//*---------------------------------------------------------------------------- +//* \fn USB_IsConfigured +//* \brief Test if the device is configured and handle enumerationDEVICE.DeviceEndpoint[ep_num].EPCFG.bit.EPTYPE1 +//*---------------------------------------------------------------------------- +uint8_t USB_IsConfigured(P_USB_CDC pCdc) +{ + Usb *pUsb = pCdc->pUsb; + + /* Check for End of Reset flag */ + if (pUsb->DEVICE.INTFLAG.reg & USB_DEVICE_INTFLAG_EORST) { + /* Clear the flag */ + pUsb->DEVICE.INTFLAG.reg |= USB_DEVICE_INTFLAG_EORST; + /* Set Device address as 0 */ + pUsb->DEVICE.DADD.reg = USB_DEVICE_DADD_ADDEN | 0; + /* Configure endpoint 0 */ + /* Configure Endpoint 0 for Control IN and Control OUT */ + pUsb->DEVICE.DeviceEndpoint[0].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE0(1) | USB_DEVICE_EPCFG_EPTYPE1(1); + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_BK0RDY; + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK1RDY; + /* Configure control OUT Packet size to 64 bytes */ + usb_endpoint_table[0].DeviceDescBank[0].PCKSIZE.bit.SIZE = 3; + /* Configure control IN Packet size to 64 bytes */ + usb_endpoint_table[0].DeviceDescBank[1].PCKSIZE.bit.SIZE = 3; + /* Configure the data buffer address for control OUT */ + usb_endpoint_table[0].DeviceDescBank[0].ADDR.reg = (uint32_t)&udd_ep_out_cache_buffer[0]; + /* Configure the data buffer address for control IN */ + usb_endpoint_table[0].DeviceDescBank[1].ADDR.reg = (uint32_t)&udd_ep_in_cache_buffer[0]; + /* Set Multipacket size to 8 for control OUT and byte count to 0*/ + usb_endpoint_table[0].DeviceDescBank[0].PCKSIZE.bit.MULTI_PACKET_SIZE = 8; + usb_endpoint_table[0].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT = 0; + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK0RDY; + + // Reset current configuration value to 0 + pCdc->currentConfiguration = 0; + } else if (pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_RXSTP) { + AT91F_CDC_Enumerate(pCdc); + } + + return pCdc->currentConfiguration; +} + + +static volatile bool read_job = false; +//*---------------------------------------------------------------------------- +//* \fn USB_Read +//* \brief Read available data from Endpoint OUT +//*---------------------------------------------------------------------------- +uint32_t USB_Read(P_USB_CDC pCdc, char *pData, uint32_t length) +{ + Usb *pUsb = pCdc->pUsb; + uint32_t packetSize = 0; + uint8_t* p_cache_buffer; + + if (!read_job) { + /* Set the buffer address for ep data */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].ADDR.reg = (uint32_t)&udd_ep_out_cache_buffer[USB_EP_OUT-1]; + /* Set the byte count as zero */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT = 0; + /* Set the byte count as zero */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.MULTI_PACKET_SIZE = 0; + /* Start the reception by clearing the bank 0 ready bit */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSCLR.bit.BK0RDY = true; + /* set the user flag */ + read_job = true; + } + + /* Check for Transfer Complete 0 flag */ + if ( pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT0 ) { + /* Set packet size */ + packetSize = MIN(usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT, length); + /* Copy read data to user buffer */ + //memcpy(pData, udd_ep_out_cache_buffer[USB_EP_OUT-1], packetSize); + p_cache_buffer = udd_ep_out_cache_buffer[USB_EP_OUT-1]; + for(uint32_t u32_index=0; u32_index < packetSize; u32_index++) + { + pData[u32_index] = p_cache_buffer[u32_index]; + } + + /* Clear the Transfer Complete 0 flag */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT0; + /* Clear the user flag */ + read_job = false; + } + + return packetSize; +} + +uint32_t USB_Read_blocking(P_USB_CDC pCdc, char *pData, uint32_t length) +{ + Usb *pUsb = pCdc->pUsb; + + if (read_job) { + /* Stop the reception by setting the bank 0 ready bit */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSSET.bit.BK0RDY = true; + /* Clear the user flag */ + read_job = false; + } + + /* Set the buffer address for ep data */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].ADDR.reg = ((uint32_t)pData); + /* Set the byte count as zero */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.BYTE_COUNT = 0; + /* Set the multi packet size as zero for multi-packet transfers where length > ep size */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.MULTI_PACKET_SIZE = length; + /* Clear the bank 0 ready flag */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSCLR.bit.BK0RDY = true; + /* Wait for transfer to complete */ + while (!( pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT0 )); + /* Clear Transfer complete 0 flag */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT0; + + return length; + +} + + +uint32_t USB_Write(P_USB_CDC pCdc, const char *pData, uint32_t length, uint8_t ep_num) +{ + Usb *pUsb = pCdc->pUsb; + uint32_t data_address; + uint8_t buf_index; + uint8_t* p_cache_buffer; + + /* Set buffer index */ + buf_index = (ep_num == 0) ? 0 : 1; + + /* Check for requirement for multi-packet or auto zlp */ + if (length >= (1 << (usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.SIZE + 3))) { + /* Update the EP data address */ + data_address = (uint32_t) pData; + /* Enable auto zlp */ + usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.AUTO_ZLP = true; + } else { + /* Copy to local buffer */ + //memcpy(udd_ep_in_cache_buffer[buf_index], pData, length); + p_cache_buffer = udd_ep_in_cache_buffer[buf_index]; + for(uint32_t u32_index=0; u32_index < length; u32_index++) + { + p_cache_buffer[u32_index] = pData[u32_index]; + } + /* Update the EP data address */ + data_address = (uint32_t) &udd_ep_in_cache_buffer[buf_index]; + } + + /* Set the buffer address for ep data */ + usb_endpoint_table[ep_num].DeviceDescBank[1].ADDR.reg = data_address; + /* Set the byte count as zero */ + usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.BYTE_COUNT = length; + /* Set the multi packet size as zero for multi-packet transfers where length > ep size */ + usb_endpoint_table[ep_num].DeviceDescBank[1].PCKSIZE.bit.MULTI_PACKET_SIZE = 0; + /* Clear the transfer complete flag */ + pUsb->DEVICE.DeviceEndpoint[ep_num].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT1; + /* Set the bank as ready */ + pUsb->DEVICE.DeviceEndpoint[ep_num].EPSTATUSSET.bit.BK1RDY = true; + + /* Wait for transfer to complete */ + while (!( pUsb->DEVICE.DeviceEndpoint[ep_num].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT1 )); + + return length; +} + +//*---------------------------------------------------------------------------- +//* \fn AT91F_USB_SendData +//* \brief Send Data through the control endpoint +//*---------------------------------------------------------------------------- + +static void AT91F_USB_SendData(P_USB_CDC pCdc, const char *pData, uint32_t length) +{ + USB_Write(pCdc, pData, length, 0); +} + +//*---------------------------------------------------------------------------- +//* \fn AT91F_USB_SendZlp +//* \brief Send zero length packet through the control endpoint +//*---------------------------------------------------------------------------- +void AT91F_USB_SendZlp(Usb *pUsb) +{ + /* Set the byte count as zero */ + usb_endpoint_table[0].DeviceDescBank[1].PCKSIZE.bit.BYTE_COUNT = 0; + /* Clear the transfer complete flag */ + pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRCPT1; + /* Set the bank as ready */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.bit.BK1RDY = true; + /* Wait for transfer to complete */ + while (!( pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT1 )); +} + +//*---------------------------------------------------------------------------- +//* \fn AT91F_USB_SendStall +//* \brief Stall the control endpoint +//*---------------------------------------------------------------------------- +void AT91F_USB_SendStall(Usb *pUsb, bool direction_in) +{ + /* Check the direction */ + if (direction_in) { + /* Set STALL request on IN direction */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ1; + } else { + /* Set STALL request on OUT direction */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ0; + } +} + +//*---------------------------------------------------------------------------- +//* \fn AT91F_CDC_Enumerate +//* \brief This function is a callback invoked when a SETUP packet is received +//*---------------------------------------------------------------------------- +void AT91F_CDC_Enumerate(P_USB_CDC pCdc) +{ + Usb *pUsb = pCdc->pUsb; + uint8_t bmRequestType, bRequest, dir; + uint16_t wValue, wIndex, wLength, wStatus; + + /* Clear the Received Setup flag */ + pUsb->DEVICE.DeviceEndpoint[0].EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_RXSTP; + + /* Read the USB request parameters */ + bmRequestType = udd_ep_out_cache_buffer[0][0]; + bRequest = udd_ep_out_cache_buffer[0][1]; + wValue = (udd_ep_out_cache_buffer[0][2] & 0xFF); + wValue |= (udd_ep_out_cache_buffer[0][3] << 8); + wIndex = (udd_ep_out_cache_buffer[0][4] & 0xFF); + wIndex |= (udd_ep_out_cache_buffer[0][5] << 8); + wLength = (udd_ep_out_cache_buffer[0][6] & 0xFF); + wLength |= (udd_ep_out_cache_buffer[0][7] << 8); + + /* Clear the Bank 0 ready flag on Control OUT */ + pUsb->DEVICE.DeviceEndpoint[0].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK0RDY; + + /* Handle supported standard device request Cf Table 9-3 in USB specification Rev 1.1 */ + switch ((bRequest << 8) | bmRequestType) { + case STD_GET_DESCRIPTOR: + if (wValue == 0x100) + /* Return Device Descriptor */ + AT91F_USB_SendData(pCdc, devDescriptor, MIN(sizeof(devDescriptor), wLength)); + else if (wValue == 0x200) + /* Return Configuration Descriptor */ + AT91F_USB_SendData(pCdc, cfgDescriptor, MIN(sizeof(cfgDescriptor), wLength)); + else + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + break; + case STD_SET_ADDRESS: + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + /* Set device address to the newly received address from host */ + pUsb->DEVICE.DADD.reg = USB_DEVICE_DADD_ADDEN | wValue; + break; + case STD_SET_CONFIGURATION: + /* Store configuration */ + pCdc->currentConfiguration = (uint8_t)wValue; + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + /* Configure BULK OUT endpoint for CDC Data interface*/ + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE0(3); + /* Set maximum packet size as 64 bytes */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].PCKSIZE.bit.SIZE = 3; + pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_BK0RDY; + /* Configure the data buffer */ + usb_endpoint_table[USB_EP_OUT].DeviceDescBank[0].ADDR.reg = (uint32_t)&udd_ep_out_cache_buffer[1]; + /* Configure BULK IN endpoint for CDC Data interface */ + pUsb->DEVICE.DeviceEndpoint[USB_EP_IN].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE1(3); + /* Set maximum packet size as 64 bytes */ + usb_endpoint_table[USB_EP_IN].DeviceDescBank[1].PCKSIZE.bit.SIZE = 3; + pUsb->DEVICE.DeviceEndpoint[USB_EP_IN].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK1RDY; + /* Configure the data buffer */ + usb_endpoint_table[USB_EP_IN].DeviceDescBank[1].ADDR.reg = (uint32_t)&udd_ep_in_cache_buffer[1]; + /* Configure INTERRUPT IN endpoint for CDC COMM interface*/ + pUsb->DEVICE.DeviceEndpoint[USB_EP_COMM].EPCFG.reg = USB_DEVICE_EPCFG_EPTYPE1(4); + /* Set maximum packet size as 64 bytes */ + usb_endpoint_table[USB_EP_COMM].DeviceDescBank[1].PCKSIZE.bit.SIZE = 0; + pUsb->DEVICE.DeviceEndpoint[USB_EP_COMM].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK1RDY; + break; + case STD_GET_CONFIGURATION: + /* Return current configuration value */ + AT91F_USB_SendData(pCdc, (char *) &(pCdc->currentConfiguration), sizeof(pCdc->currentConfiguration)); + break; + case STD_GET_STATUS_ZERO: + wStatus = 0; + AT91F_USB_SendData(pCdc, (char *) &wStatus, sizeof(wStatus)); + break; + case STD_GET_STATUS_INTERFACE: + wStatus = 0; + AT91F_USB_SendData(pCdc, (char *) &wStatus, sizeof(wStatus)); + break; + case STD_GET_STATUS_ENDPOINT: + wStatus = 0; + dir = wIndex & 80; + wIndex &= 0x0F; + if (wIndex <= 3) { + if (dir) { + wStatus = (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ1) ? 1 : 0; + } else { + wStatus = (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ0) ? 1 : 0; + } + /* Return current status of endpoint */ + AT91F_USB_SendData(pCdc, (char *) &wStatus, sizeof(wStatus)); + } + else + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + break; + case STD_SET_FEATURE_ZERO: + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + break; + case STD_SET_FEATURE_INTERFACE: + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + break; + case STD_SET_FEATURE_ENDPOINT: + dir = wIndex & 0x80; + wIndex &= 0x0F; + if ((wValue == 0) && wIndex && (wIndex <= 3)) { + /* Set STALL request for the endpoint */ + if (dir) { + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ1; + } else { + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_STALLRQ0; + } + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + } + else + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + break; + case STD_CLEAR_FEATURE_ZERO: + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + break; + case STD_CLEAR_FEATURE_INTERFACE: + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + break; + case STD_CLEAR_FEATURE_ENDPOINT: + dir = wIndex & 0x80; + wIndex &= 0x0F; + if ((wValue == 0) && wIndex && (wIndex <= 3)) { + if (dir) { + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ1) { + // Remove stall request + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_STALLRQ1; + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_STALL1) { + pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_STALL1; + // The Stall has occurred, then reset data toggle + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSSET_DTGLIN; + } + } + } else { + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUS.reg & USB_DEVICE_EPSTATUSSET_STALLRQ0) { + // Remove stall request + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_STALLRQ0; + if (pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_STALL0) { + pUsb->DEVICE.DeviceEndpoint[wIndex].EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_STALL0; + // The Stall has occurred, then reset data toggle + pUsb->DEVICE.DeviceEndpoint[wIndex].EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSSET_DTGLOUT; + } + } + } + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + } + else { + AT91F_USB_SendStall(pUsb, true); + } + break; + + // handle CDC class requests + case SET_LINE_CODING: + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + break; + case GET_LINE_CODING: + /* Send current line coding */ + AT91F_USB_SendData(pCdc, (char *) &line_coding, MIN(sizeof(usb_cdc_line_coding_t), wLength)); + break; + case SET_CONTROL_LINE_STATE: + /* Store the current connection */ + pCdc->currentConnection = wValue; + /* Send ZLP */ + AT91F_USB_SendZlp(pUsb); + break; + default: + /* Stall the request */ + AT91F_USB_SendStall(pUsb, true); + break; + } +} +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/drivers/cdc_enumerate.h b/SAM-BA_MONITOR_ROMLESS/drivers/cdc_enumerate.h new file mode 100644 index 0000000..c506bee --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/drivers/cdc_enumerate.h @@ -0,0 +1,66 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#ifndef CDC_ENUMERATE_H +#define CDC_ENUMERATE_H + +#include "device_config.h" + +#if SAM_BA_USB_INTERFACE_ENABLED + +#define USB_EP_OUT 2 +#define USB_EP_OUT_SIZE 0x40 +#define USB_EP_IN 1 +#define USB_EP_IN_SIZE 0x40 +#define USB_EP_COMM 3 +#define MAX_EP 4 + +typedef struct _USB_CDC +{ + // Private members + Usb *pUsb; + uint8_t currentConfiguration; + uint8_t currentConnection; + // Public Methods: + uint8_t (*IsConfigured)(struct _USB_CDC *pCdc); + uint32_t (*Write) (struct _USB_CDC *pCdc, const char *pData, uint32_t length, uint8_t ep_num); + uint32_t (*Read) (struct _USB_CDC *pCdc, char *pData, uint32_t length); +} USB_CDC, *P_USB_CDC; + +typedef struct { + uint32_t dwDTERate; + uint8_t bCharFormat; + uint8_t bParityType; + uint8_t bDataBits; +} usb_cdc_line_coding_t; + +void AT91F_InitUSB(void); +P_USB_CDC AT91F_CDC_Open(P_USB_CDC pCdc,Usb *pUsb); +uint8_t USB_IsConfigured(P_USB_CDC pCdc); +uint32_t USB_Read(P_USB_CDC pCdc, char *pData, uint32_t length); +uint32_t USB_Write(P_USB_CDC pCdc, const char *pData, uint32_t length, uint8_t ep_num); +uint32_t USB_Read_blocking(P_USB_CDC pCdc, char *pData, uint32_t length); + +#endif +#endif // CDC_ENUMERATE_H diff --git a/SAM-BA_MONITOR_ROMLESS/drivers/uart_driver.c b/SAM-BA_MONITOR_ROMLESS/drivers/uart_driver.c new file mode 100644 index 0000000..c2aaa96 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/drivers/uart_driver.c @@ -0,0 +1,122 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#include "uart_driver.h" +#include "device_config.h" + +#if SAM_BA_UART_INTERFACE_ENABLED +/** + * \brief Open the given USART + */ +void usart_open() +{ + configure_sercom_port_pins(); + clock_configuration_for_boot_usart(); + + uart_basic_init(BOOT_USART_MODULE, USART_BAUD_REG_VAL_FOR_SAMBA, BOOT_USART_MUX_SETTINGS); +} + +void uart_basic_init(Sercom *sercom, uint16_t baud_val, uint32_t pad_conf) +{ + /* Wait for synchronization */ + wait_for_usart_enable_sync(sercom); + /* Disable the SERCOM UART module */ + sercom->USART.CTRLA.bit.ENABLE = 0; + /* Wait for synchronization */ + wait_for_usart_swrst_sync(sercom); + /* Perform a software reset */ + sercom->USART.CTRLA.bit.SWRST = 1; + /* Wait for synchronization */ + wait_for_usart_swrst_sync(sercom); + /* Wait for synchronization */ + wait_for_usart_swrst_enable_sync(sercom); + /* Update the UART pad settings, mode and data order settings */ + sercom->USART.CTRLA.reg = pad_conf | SERCOM_USART_CTRLA_MODE(1) | SERCOM_USART_CTRLA_DORD | SERCOM_USART_CTRLA_RUNSTDBY; + /* Wait for synchronization */ + wait_for_usart_ctrlb_sync(sercom); + /* Enable transmit and receive and set data size to 8 bits */ + sercom->USART.CTRLB.reg = SERCOM_USART_CTRLB_RXEN | SERCOM_USART_CTRLB_TXEN | SERCOM_USART_CTRLB_CHSIZE(0); + /* Load the baud value */ + sercom->USART.BAUD.reg = baud_val; + /* Wait for synchronization */ + wait_for_usart_enable_sync(sercom); + /* Enable SERCOM UART */ + sercom->USART.CTRLA.bit.ENABLE = 1; +} + +void uart_disable(Sercom *sercom) +{ + /* Wait for synchronization */ + wait_for_usart_enable_sync(sercom); + /* Disable SERCOM UART */ + sercom->USART.CTRLA.bit.ENABLE = 0; +} + +void uart_write_byte(Sercom *sercom, uint8_t data) +{ + wait_for_uart_syncbusy_clear(sercom); + + /* Write the data to DATA register */ + sercom->USART.DATA.reg = (uint16_t)data; + + while (!(sercom->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_TXC)); +} + +uint8_t uart_read_byte(Sercom *sercom) +{ + wait_for_uart_syncbusy_clear(sercom); + uart_read_clear_errors(sercom); + + /* Return the read data */ + return((uint8_t)sercom->USART.DATA.reg); +} + +void uart_write_buffer_polled(Sercom *sercom, uint8_t *ptr, uint16_t length) +{ + /* Do the following for specified length */ + do { + /* Wait for Data Register Empty flag */ + while(!sercom->USART.INTFLAG.bit.DRE); + /* Send data from the buffer */ + sercom->USART.DATA.reg = (uint16_t)*ptr++; + } while (length--); +} + +void uart_read_buffer_polled(Sercom *sercom, uint8_t *ptr, uint16_t length) +{ + /* Do the following for specified length */ + do { + /* Wait for Receive Complete flag */ + while(!sercom->USART.INTFLAG.bit.RXC); + uart_read_clear_errors(sercom); + + /* Store the read data to the buffer */ + *ptr++ = (uint8_t)sercom->USART.DATA.reg; + } while (length--); +} + +bool usart_is_rx_ready(void) { + return (BOOT_USART_MODULE->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_RXC); +} +#endif diff --git a/SAM-BA_MONITOR_ROMLESS/drivers/uart_driver.h b/SAM-BA_MONITOR_ROMLESS/drivers/uart_driver.h new file mode 100644 index 0000000..ed28fb4 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/drivers/uart_driver.h @@ -0,0 +1,82 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#ifndef UART_DRIVER_H +#define UART_DRIVER_H + +#include "device_config.h" + +#if SAM_BA_UART_INTERFACE_ENABLED + +/** + * \brief Initializes the UART + * + * \param Pointer to SERCOM instance + * \param Baud value corresponding to the desired baudrate + * \param SERCOM pad settings + */ +void uart_basic_init(Sercom *sercom, uint16_t baud_val, uint32_t pad_conf); + +/** + * \brief Disables UART interface + * + * \param Pointer to SERCOM instance + */ +void uart_disable(Sercom *sercom); + +/** + * \brief Sends a single byte through UART interface + * + * \param Pointer to SERCOM instance + * \param Data to send + */ +void uart_write_byte(Sercom *sercom, uint8_t data); + +/** + * \brief Reads a single character from UART interface + * + * \param Pointer to SERCOM instance + * \return Data byte read + */ +uint8_t uart_read_byte(Sercom *sercom); + +/** + * \brief Sends buffer on UART interface + * + * \param Pointer to SERCOM instance + * \param Pointer to data to send + * \param Number of bytes to send + */ +void uart_write_buffer_polled(Sercom *sercom, uint8_t *ptr, uint16_t length); + +/** + * \brief Reads data on UART interface + * + * \param Pointer to SERCOM instance + * \param Pointer to store read data + * \param Number of bytes to read + */ +void uart_read_buffer_polled(Sercom *sercom, uint8_t *ptr, uint16_t length); +#endif +#endif \ No newline at end of file diff --git a/SAM-BA_MONITOR_ROMLESS/main.c b/SAM-BA_MONITOR_ROMLESS/main.c new file mode 100644 index 0000000..db9ec10 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/main.c @@ -0,0 +1,111 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +/** + * -------------------- + * SAM-BA Implementation + * -------------------- + * + * Memory Mapping + * -------------------- + * SAM-BA code will be located at 0x0 and executed before any applicative code. + * + * Applications compiled to be executed along with the bootloader will start at + * 0x2000 + * Before jumping to the application, the bootloader changes the VTOR register + * to use the interrupt vectors of the application @0x2000.<- not required as + * application code is taking care of this + * Version 2.18 + * Date 12-8-2017 + * Author RB +*/ + +#include "sam_ba_monitor.h" +#include "device_config.h" + +static void check_start_application(void); + +/** + * \brief SAM-BA Main loop. + * \return Unused (ANSI-C compatibility). + */ +int main(void) +{ + DEBUG_PIN_HIGH; + + /* Jump in application if condition is satisfied */ + check_start_application(); + + /* We have determined we should stay in the monitor. */ + /* System initialization */ + system_init(); + cpu_irq_enable(); + init_sam_ba_monitor_interface(); + + DEBUG_PIN_LOW; + + /* Wait for a complete enum on usb or a '#' char on serial line */ + while (1) { + process_sam_ba_monitor(); + } +} + +/** + * \brief Check the application startup condition + * + */ +static void check_start_application(void) +{ + uint32_t app_start_address; + + /* Load the Reset Handler address of the application */ + app_start_address = *(uint32_t *)(APP_START_ADDRESS + 4); + + /** + * Test reset vector of application @APP_START_ADDRESS+4 + * Stay in SAM-BA if *(APP_START+0x4) == 0xFFFFFFFF + * Application erased condition + */ + if (app_start_address == 0xFFFFFFFF) { + /* Stay in Bootloader */ + return; + } + + if(b_is_bootloader_condition_enabled()) + { + /* Stay in Bootloader */ + return; + } + else + { + /* Re-base the Stack Pointer */ + __set_MSP(*(uint32_t *) APP_START_ADDRESS); + + /* Re-base the vector table base address */ + SCB->VTOR = ((uint32_t) APP_START_ADDRESS & SCB_VTOR_TBLOFF_Msk); + + /* Jump to application Reset Handler in the application */ + asm("bx %0"::"r"(app_start_address)); + } +} diff --git a/SAM-BA_MONITOR_ROMLESS/sam_ba/sam_ba_monitor.c b/SAM-BA_MONITOR_ROMLESS/sam_ba/sam_ba_monitor.c new file mode 100644 index 0000000..efa6555 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/sam_ba/sam_ba_monitor.c @@ -0,0 +1,330 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#include "sam_ba_monitor.h" +#include "usart_sam_ba.h" +#include "usb_sam_ba.h" +#include "uart_driver.h" +#include "cdc_enumerate.h" +#include "device_config.h" + +static void print_new_line(void); +const char RomBOOT_Version[] = SAM_BA_VERSION; + +/* Provides one common interface to handle both USART and USB-CDC */ +typedef struct +{ + /* send one byte of data */ + int (*put_c)(int value); + /* Get one byte */ + int (*get_c)(void); + /* Receive buffer not empty */ + bool (*is_rx_ready)(void); + /* Send given data (polling) */ + uint32_t (*putdata)(void const* data, uint32_t length); + /* Get data from comm. device */ + uint32_t (*getdata)(void* data, uint32_t length); + /* Send given data (polling) using xmodem (if necessary) */ + uint32_t (*putdata_xmd)(void const* data, uint32_t length); + /* Get data from comm. device using xmodem (if necessary) */ + uint32_t (*getdata_xmd)(void* data, uint32_t length); +} t_monitor_if; + +#if SAM_BA_UART_INTERFACE_ENABLED +/* Initialize structures with function pointers from supported interfaces */ +const t_monitor_if uart_if = +{ usart_putc, usart_getc, usart_is_rx_ready, usart_putdata, usart_getdata, + usart_putdata_xmd, usart_getdata_xmd }; +#endif + +#if SAM_BA_USB_INTERFACE_ENABLED +extern USB_CDC pCdc; + +//Please note that USB doesn't use Xmodem protocol, since USB already includes flow control and data verification +//Data are simply forwarded without further coding. +const t_monitor_if usbcdc_if = +{ cdc_putc, cdc_getc, cdc_is_rx_ready, cdc_write_buf, + cdc_read_buf, cdc_write_buf, cdc_read_buf_xmd }; +#endif + +/* The pointer to the interface object use by the monitor */ +t_monitor_if * ptr_monitor_if; + +/* b_terminal_mode mode (ascii) or hex mode */ +volatile bool b_terminal_mode = false; +volatile uint32_t sp; + + +static void print_new_line(void) +{ + ptr_monitor_if->putdata("\n\r", 2); +} + +void init_sam_ba_monitor_interface(void) +{ + #if SAM_BA_UART_INTERFACE_ENABLED + usart_open(); + #endif + + #if SAM_BA_USB_INTERFACE_ENABLED + clock_configuration_for_usb(); + usb_init(); + #endif +} + +void process_sam_ba_monitor(void) +{ + #if SAM_BA_USB_INTERFACE_ENABLED + if (pCdc.IsConfigured(&pCdc) != 0) { + ptr_monitor_if = (t_monitor_if*) &usbcdc_if; + sam_ba_monitor_run(); + } + #endif + + #if SAM_BA_UART_INTERFACE_ENABLED + if(uart_if.is_rx_ready() && (SHARP_CHARACTER == uart_if.get_c())) { + ptr_monitor_if = (t_monitor_if*) &uart_if; + sam_ba_monitor_run(); + while(1); + } + #endif +} + +/** + * \brief This function allows data rx by USART + * + * \param *data Data pointer + * \param length Length of the data + */ +void sam_ba_putdata_term(uint8_t* data, uint32_t length) +{ + uint8_t temp, buf[12], *data_ascii; + uint32_t i, int_value; + + if (b_terminal_mode) + { + if (length == 4) + int_value = *(uint32_t *) data; + else if (length == 2) + int_value = *(uint16_t *) data; + else + int_value = *(uint8_t *) data; + + data_ascii = buf + 2; + data_ascii += length * 2 - 1; + + for (i = 0; i < length * 2; i++) + { + temp = (uint8_t) (int_value & 0xf); + + if (temp <= 0x9) + *data_ascii = temp | 0x30; + else + *data_ascii = temp + 0x37; + + int_value >>= 4; + data_ascii--; + } + buf[0] = '0'; + buf[1] = 'x'; + buf[length * 2 + 2] = '\n'; + buf[length * 2 + 3] = '\r'; + ptr_monitor_if->putdata(buf, length * 2 + 4); + } + else + ptr_monitor_if->putdata(data, length); + return; +} + +void call_applet(uint32_t address) +{ + uint32_t app_start_address; + + cpu_irq_disable(); + + sp = __get_MSP(); + + /* Rebase the Stack Pointer */ + __set_MSP(*(uint32_t *) address); + + /* Rebase the vector table base address */ + SCB->VTOR = ((uint32_t) address & SCB_VTOR_TBLOFF_Msk); + + /* Load the Reset Handler address of the application */ + app_start_address = *(uint32_t *)(address + 4); + + /* Jump to application Reset Handler in the application */ + asm("bx %0"::"r"(app_start_address)); +} + +/** + * \brief This function starts the SAM-BA monitor. + */ +void sam_ba_monitor_run(void) +{ + uint32_t length; + uint32_t j, u8tmp, current_number, command; + uint8_t *ptr_data, *ptr, data[SIZEBUFMAX]; + + ptr_data = 0; + command = 'z'; + j=0; + + // Start waiting some cmd + while (1) + { + length = ptr_monitor_if->getdata(data, SIZEBUFMAX); + ptr = data; + for (uint32_t i = 0; i < length; i++) + { + if (*ptr != 0xff) + { + if (*ptr == '#') + { + if (b_terminal_mode) + { + print_new_line(); + } + if (command == 'S') + { + //Check if some data are remaining in the "data" buffer + if(length>i) + { + //Move current indexes to next avail data (currently ptr points to "#") + ptr++; + i++; + //We need to add first the remaining data of the current buffer already read from usb + //read a maximum of "current_number" bytes + u8tmp=MIN((length-i),current_number); + for(j=0;jgetdata_xmd(ptr_data, current_number-j); + + __asm("nop"); + } + else if (command == 'R') + { + ptr_monitor_if->putdata_xmd(ptr_data, current_number); + } + else if (command == 'O') + { + *ptr_data = (char) current_number; + } + else if (command == 'H') + { + *((uint16_t *) ptr_data) = (uint16_t) current_number; + } + else if (command == 'W') + { + *((int *) ptr_data) = current_number; + } + else if (command == 'o') + { + sam_ba_putdata_term(ptr_data, 1); + } + else if (command == 'h') + { + current_number = *((uint16_t *) ptr_data); + sam_ba_putdata_term((uint8_t*) ¤t_number, 2); + } + else if (command == 'w') + { + current_number = *((uint32_t *) ptr_data); + sam_ba_putdata_term((uint8_t*) ¤t_number, 4); + } + else if (command == 'G') + { + call_applet(current_number); + //ptr_monitor_if->put_c(0x6); + /* Rebase the Stack Pointer */ + __set_MSP(sp); + cpu_irq_enable(); + } + else if (command == 'T') + { + b_terminal_mode = 1; + print_new_line(); + } + else if (command == 'N') + { + if (b_terminal_mode == 0) + { + print_new_line(); + } + b_terminal_mode = 0; + } + else if (command == 'V') + { + ptr_monitor_if->putdata((uint8_t *) RomBOOT_Version, strlen(RomBOOT_Version)); + } + + command = 'z'; + current_number = 0; + + if (b_terminal_mode) + { + ptr_monitor_if->putdata(">", 1); + } + } + else + { + if (('0' <= *ptr) && (*ptr <= '9')) + { + current_number = (current_number << 4) | (*ptr - '0'); + } + else if (('A' <= *ptr) && (*ptr <= 'F')) + { + current_number = (current_number << 4) | (*ptr - 'A' + 0xa); + } + else if (('a' <= *ptr) && (*ptr <= 'f')) + { + current_number = (current_number << 4) | (*ptr - 'a' + 0xa); + } + else if (*ptr == ',') + { + ptr_data = (uint8_t *) current_number; + current_number = 0; + } + else + { + command = *ptr; + current_number = 0; + } + } + ptr++; + } + } + } +} diff --git a/SAM-BA_MONITOR_ROMLESS/sam_ba/sam_ba_monitor.h b/SAM-BA_MONITOR_ROMLESS/sam_ba/sam_ba_monitor.h new file mode 100644 index 0000000..8cb95da --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/sam_ba/sam_ba_monitor.h @@ -0,0 +1,57 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#ifndef _MONITOR_SAM_BA_H_ +#define _MONITOR_SAM_BA_H_ + +#include "device_config.h" + +/** This value is set by considering USB communication as well, not just UART*/ +#define SIZEBUFMAX 64 + +/** + * \brief Initialize the monitor + * + */ +void init_sam_ba_monitor_interface(void); +void process_sam_ba_monitor(void); +/** + * \brief Main function of the SAM-BA Monitor + * + */ +void sam_ba_monitor_run(void); + +/** + * \brief + * + */ +void sam_ba_putdata_term(uint8_t* data, uint32_t length); + +/** + * \brief + * + */ +void call_applet(uint32_t address); + +#endif // _MONITOR_SAM_BA_H_ diff --git a/SAM-BA_MONITOR_ROMLESS/sam_ba/usart_sam_ba.c b/SAM-BA_MONITOR_ROMLESS/sam_ba/usart_sam_ba.c new file mode 100644 index 0000000..3b97feb --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/sam_ba/usart_sam_ba.c @@ -0,0 +1,355 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + + +#include "usart_sam_ba.h" +#include "uart_driver.h" + +#if SAM_BA_UART_INTERFACE_ENABLED + +/* Test for timeout in AT91F_GetChar */ +uint16_t size_of_data; +uint8_t mode_of_transfer; + + +/** + * \brief Configures communication line + * + */ +void usart_close(void) +{ + uart_disable(BOOT_USART_MODULE); +} + +/** + * \brief Puts a byte on usart line + * The type int is used to support printf redirection from compiler LIB. + * + * \param value Value to put + * + * \return \c 1 if function was successfully done, otherwise \c 0. + */ +int usart_putc(int value) +{ + uart_write_byte(BOOT_USART_MODULE, (uint8_t)value); + return 1; +} + + + +int usart_getc(void) { + uint16_t retval; + //Wait until input buffer is filled + while(!(usart_is_rx_ready())); + retval = (uint16_t)uart_read_byte(BOOT_USART_MODULE); + //usart_read_wait(&usart_sam_ba, &retval); + return (int)retval; + +} + +int usart_sharp_received(void) { + if (usart_is_rx_ready()) { + if (usart_getc() == SHARP_CHARACTER) + return (true); + } + return (false); +} + +//Send given data (polling) +uint32_t usart_putdata(void const* data, uint32_t length) { + uint32_t i; + uint8_t* ptrdata; + ptrdata = (uint8_t*) data; + for (i = 0; i < length; i++) { + usart_putc(*ptrdata); + ptrdata++; + } + return (i); +} + +//Get data from comm. device +uint32_t usart_getdata(void* data, uint32_t length) { + uint8_t* ptrdata; + ptrdata = (uint8_t*) data; + *ptrdata = usart_getc(); + return (1); +} + +//*---------------------------------------------------------------------------- +//* \fn add_crc +//* \brief Compute the CRC +//*---------------------------------------------------------------------------- +unsigned short add_crc(char ptr, unsigned short crc) { + + unsigned short cmpt; + + crc = crc ^ (int) ptr << 8; + + for (cmpt = 0; cmpt < 8; cmpt++) { + if (crc & 0x8000) + crc = crc << 1 ^ CRC16POLY; + else + crc = crc << 1; + } + + return (crc & 0xFFFF); +} + +//*---------------------------------------------------------------------------- +//* \fn getbytes +//* \brief +//*---------------------------------------------------------------------------- +static uint16_t getbytes(uint8_t *ptr_data, uint16_t length) { + uint16_t crc = 0; + uint16_t cpt; + uint8_t c; + + for (cpt = 0; cpt < length; ++cpt) { + c = usart_getc(); + crc = add_crc(c, crc); + //crc = (crc << 8) ^ xcrc16tab[(crc>>8) ^ c]; + if (size_of_data || mode_of_transfer) { + *ptr_data++ = c; + if (length == PKTLEN_128) + size_of_data--; + } + } + + return crc; +} + +//*---------------------------------------------------------------------------- +//* \fn putPacket +//* \brief Used by Xup to send packets. +//*---------------------------------------------------------------------------- +static int putPacket(uint8_t *tmppkt, uint8_t sno) { + uint32_t i; + uint16_t chksm; + uint8_t data; + + chksm = 0; + + usart_putc(SOH); + + usart_putc(sno); + usart_putc((uint8_t) ~(sno)); + + for (i = 0; i < PKTLEN_128; i++) { + if (size_of_data || mode_of_transfer) { + data = *tmppkt++; + size_of_data--; + } else + data = 0x00; + + usart_putc(data); + + //chksm = (chksm<<8) ^ xcrc16tab[(chksm>>8)^data]; + chksm = add_crc(data, chksm); + } + + /* An "endian independent way to extract the CRC bytes. */ + usart_putc((uint8_t) (chksm >> 8)); + usart_putc((uint8_t) chksm); + + return (usart_getc()); /* Wait for ack */ +} + +//*---------------------------------------------------------------------------- +//* \fn getPacket +//* \brief Used by Xdown to retrieve packets. +//*---------------------------------------------------------------------------- +uint8_t getPacket(uint8_t *ptr_data, uint8_t sno) { + uint8_t seq[2]; + uint16_t crc, xcrc; + + getbytes(seq, 2); + xcrc = getbytes(ptr_data, PKTLEN_128); + + /* An "endian independent way to combine the CRC bytes. */ + crc = (uint16_t) usart_getc() << 8; + crc += (uint16_t) usart_getc(); + + if ((crc != xcrc) || (seq[0] != sno) || (seq[1] != (uint8_t) (~sno))) { + usart_putc(CAN); + return (false); + } + + usart_putc(ACK); + return (true); +} + +//*---------------------------------------------------------------------------- +//* \fn Xup +//* \brief Called when a transfer from target to host is being made (considered +//* an upload). +//*---------------------------------------------------------------------------- +//static void Xup(char *ptr_data, uint16_t length) +//Send given data (polling) using xmodem (if necessary) +uint32_t usart_putdata_xmd(void const* data, uint32_t length) { + uint8_t c, sno = 1; + uint8_t done; + uint8_t * ptr_data = (uint8_t *) data; + + if (!length) + mode_of_transfer = 1; + else { + size_of_data = length; + mode_of_transfer = 0; + } + + if (length & (PKTLEN_128 - 1)) { + length += PKTLEN_128; + length &= ~(PKTLEN_128 - 1); + } + + /* Startup synchronization... */ + /* Wait to receive a NAK or 'C' from receiver. */ + done = 0; + while (!done) { + c = (uint8_t) usart_getc(); + + switch (c) { + case NAK: + done = 1; + // ("CSM"); + break; + case 'C': + done = 1; + // ("CRC"); + break; + case 'q': /* ELS addition, not part of XMODEM spec. */ + return (0); + default: + break; + } + } + + done = 0; + sno = 1; + while (!done) { + c = (uint8_t) putPacket((uint8_t *) ptr_data, sno); + + switch (c) { + case ACK: + ++sno; + length -= PKTLEN_128; + ptr_data += PKTLEN_128; + // ("A"); + break; + case NAK: + // ("N"); + break; + case CAN: + case EOT: + default: + done = 0; + break; + } + if (!length) { + usart_putc(EOT); + usart_getc(); /* Flush the ACK */ + break; + } + // ("!"); + } + + mode_of_transfer = 0; + // ("Xup_done."); + return (1); + // return(0); +} + +//*---------------------------------------------------------------------------- +//* \fn Xdown +//* \brief Called when a transfer from host to target is being made (considered +//* an download). +//*---------------------------------------------------------------------------- +//static void Xdown(char *ptr_data, uint16_t length) +//Get data from comm. device using xmodem (if necessary) +uint32_t usart_getdata_xmd(void* data, uint32_t length) { + uint32_t timeout; + char c; + uint8_t * ptr_data = (uint8_t *) data; + uint32_t b_run, nbr_of_timeout = 100; + uint8_t sno = 0x01; + uint32_t data_transfered = 0; + + //Copied from legacy source code ... might need some tweaking + uint32_t loops_per_second = CPU_FREQUENCY/10; /* system_clock_source_get_hz(BOOT_USART_GCLK_GEN_SOURCE) / 10; */ + + if (length == 0) + mode_of_transfer = 1; + else { + size_of_data = length; + mode_of_transfer = 0; + } + + /* Startup synchronization... */ + /* Continuously send NAK or 'C' until sender responds. */ + // ("Xdown"); + while (1) { + usart_putc('C'); + timeout = loops_per_second; + while (!(usart_is_rx_ready()) && timeout) + timeout--; + if (timeout) + break; + + if (!(--nbr_of_timeout)) + return (0); +// return -1; + } + + b_run = true; + // ("Got response"); + while (b_run != false) { + c = (char) usart_getc(); + + switch (c) { + case SOH: /* 128-byte incoming packet */ + // ("O"); + b_run = getPacket(ptr_data, sno); + if (b_run == true) { + ++sno; + ptr_data += PKTLEN_128; + data_transfered += PKTLEN_128; + } + break; + case EOT: // ("E"); + usart_putc(ACK); + b_run = false; + break; + case CAN: // ("C"); + case ESC: /* "X" User-invoked abort */ + default: + b_run = false; + break; + } + // ("!"); + } + mode_of_transfer = 0; + return (true); +// return(b_run); +} +#endif diff --git a/SAM-BA_MONITOR_ROMLESS/sam_ba/usart_sam_ba.h b/SAM-BA_MONITOR_ROMLESS/sam_ba/usart_sam_ba.h new file mode 100644 index 0000000..a897151 --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/sam_ba/usart_sam_ba.h @@ -0,0 +1,140 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#ifndef _USART_SAM_BA_H_ +#define _USART_SAM_BA_H_ + +#include +#include + + +/* Define the default time-out value for USART. */ +#define USART_DEFAULT_TIMEOUT 1000 + +/* Xmodem related defines */ +/* CRC16 polynomial */ +#define CRC16POLY 0x1021 + +#define SHARP_CHARACTER '#' + +/* X/Ymodem protocol: */ +#define SOH 0x01 +//#define STX 0x02 +#define EOT 0x04 +#define ACK 0x06 +#define NAK 0x15 +#define CAN 0x18 +#define ESC 0x1b + +#define PKTLEN_128 128 + + +/** + * \brief Open the given USART + */ +void usart_open(void); + +/** + * \brief Stops the USART + */ +void usart_close(void); + +/** + * \brief Puts a byte on usart line + * + * \param value Value to put + * + * \return \c 1 if function was successfully done, otherwise \c 0. + */ +int usart_putc(int value); + +/** + * \brief Waits and gets a value on usart line + * + * \return value read on usart line + */ +int usart_getc(void); + +/** + * \brief Returns true if the SAM-BA Uart received the sharp char + * + * \return Returns true if the SAM-BA Uart received the sharp char + */ +int usart_sharp_received(void); + +/** + * \brief This function checks if a character has been received on the usart line + * + * \return \c 1 if a byte is ready to be read. + */ +bool usart_is_rx_ready(void); + +/** + * \brief Send buffer on usart line + * + * \param data pointer + * \param number of data to send + * \return number of data sent + */ +uint32_t usart_putdata(void const* data, uint32_t length); //Send given data (polling) + +/** + * \brief Gets data from usart line + * + * \param data pointer + * \param number of data to get + * \return value read on usart line + */ +uint32_t usart_getdata(void* data, uint32_t length); //Get data from comm. device + +/** + * \brief Send buffer on usart line using Xmodem protocol + * + * \param data pointer + * \param number of data to send + * \return number of data sent + */ +uint32_t usart_putdata_xmd(void const* data, uint32_t length); //Send given data (polling) using xmodem (if necessary) + +/** + * \brief Gets data from usart line using Xmodem protocol + * + * \param data pointer + * \param number of data to get + * \return value read on usart line + */ +uint32_t usart_getdata_xmd(void* data, uint32_t length); //Get data from comm. device using xmodem (if necessary) + +/** + * \brief Gets data from usart line using Xmodem protocol + * + * \param data pointer + * \param number of data to get + * \return value read on usart line + */ +unsigned short add_crc(char ptr, unsigned short crc); + +uint8_t getPacket(uint8_t *pData, uint8_t sno); + +#endif // _USART_SAM_BA_H_ diff --git a/SAM-BA_MONITOR_ROMLESS/sam_ba/usb_sam_ba.c b/SAM-BA_MONITOR_ROMLESS/sam_ba/usb_sam_ba.c new file mode 100644 index 0000000..0575adb --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/sam_ba/usb_sam_ba.c @@ -0,0 +1,93 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#include "cdc_enumerate.h" +#include "usb_sam_ba.h" +#include "device_config.h" + +#if SAM_BA_USB_INTERFACE_ENABLED + +extern USB_CDC pCdc; + +void usb_init(void) +{ + pCdc.pUsb = USB; + /* Initialize USB */ + AT91F_InitUSB(); + /* Get the default CDC structure settings */ + AT91F_CDC_Open((P_USB_CDC)&pCdc, pCdc.pUsb); +} + +int cdc_putc(int value) +{ + /* Send single byte on USB CDC */ + USB_Write(&pCdc, (const char *)&value, 1, USB_EP_IN); + return 1; +} + +int cdc_getc(void) +{ + uint8_t rx_char; + /* Read singly byte on USB CDC */ + USB_Read(&pCdc, (char *)&rx_char, 1); + return (int)rx_char; +} + +bool cdc_is_rx_ready(void) +{ + /* Check whether the device is configured */ + if ( !USB_IsConfigured(&pCdc)) + return 0; + + /* Return transfer complete 0 flag status */ + return (pCdc.pUsb->DEVICE.DeviceEndpoint[USB_EP_OUT].EPINTFLAG.reg & USB_DEVICE_EPINTFLAG_TRCPT0); +} + +uint32_t cdc_write_buf(void const* data, uint32_t length) +{ + /* Send the specified number of bytes on USB CDC */ + USB_Write(&pCdc, (const char *)data, length, USB_EP_IN); + return length; +} + +uint32_t cdc_read_buf(void* data, uint32_t length) +{ + /* Check whether the device is configured */ + if ( !USB_IsConfigured(&pCdc)) + return 0; + + /* Read from USB CDC */ + return USB_Read(&pCdc, (char *)data, length); +} + +uint32_t cdc_read_buf_xmd(void* data, uint32_t length) +{ + /* Check whether the device is configured */ + if ( !USB_IsConfigured(&pCdc)) + return 0; + + /* Blocking read till specified number of bytes is received */ + return USB_Read_blocking(&pCdc, (char *)data, length); +} +#endif diff --git a/SAM-BA_MONITOR_ROMLESS/sam_ba/usb_sam_ba.h b/SAM-BA_MONITOR_ROMLESS/sam_ba/usb_sam_ba.h new file mode 100644 index 0000000..050aa7c --- /dev/null +++ b/SAM-BA_MONITOR_ROMLESS/sam_ba/usb_sam_ba.h @@ -0,0 +1,87 @@ +/******************************************************************************* +Copyright (c) 2017 released Microchip Technology Inc. All rights reserved. + +Microchip licenses to you the right to use, modify, copy and distribute +Software only when embedded on a Microchip microcontroller or digital signal +controller that is integrated into your product or third party product +(pursuant to the sublicense terms in the accompanying license agreement). + +You should refer to the license agreement accompanying this Software for +additional information regarding your rights and obligations. + +SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF +MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. +IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER +CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR +OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES +INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR +CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF +SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES +(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. +*******************************************************************************/ + + +#ifndef _USB_SAM_BA_H_ +#define _USB_SAM_BA_H_ + +#include "device_config.h" + +/** + * \brief Initializes the USB module + * + * \return Pointer to the USB CDC structure + */ +void usb_init(void); + +/** + * \brief Sends a single byte through USB CDC + * + * \param Data to send + * \return number of data sent + */ +int cdc_putc(int value); + +/** + * \brief Reads a single byte through USB CDC + * + * \return Data read through USB + */ +int cdc_getc(void); + +/** + * \brief Checks if a character has been received on USB CDC + * + * \return \c 1 if a byte is ready to be read. + */ +bool cdc_is_rx_ready(void); + +/** + * \brief Sends buffer on USB CDC + * + * \param data pointer + * \param number of data to send + * \return number of data sent + */ +uint32_t cdc_write_buf(void const* data, uint32_t length); + +/** + * \brief Gets data on USB CDC + * + * \param data pointer + * \param number of data to read + * \return number of data read + */ +uint32_t cdc_read_buf(void* data, uint32_t length); + +/** + * \brief Gets specified number of bytes on USB CDC + * + * \param data pointer + * \param number of data to read + * \return number of data read + */ +uint32_t cdc_read_buf_xmd(void* data, uint32_t length); + + +#endif // _USB_SAM_BA_H_