SAM4S 初始化步骤
SAM4S initialization in baby steps
这个问题可能很明显,很愚蠢,但我想不出答案。
我正在尝试为 Atmel 的 sam4s xplained 开发板创建一个简单的 makefile 项目。
我是 ARM 的新手,我对如何让这些东西工作感到有点迷茫。这是我试图让 LED 工作的方法:
/* Enable clock for PIOC. */
PMC->PMC_WPMR = PMC_WPMR_WPKEY_PASSWD;
PMC->PMC_PCER0 = PMC_PCER0_PID13; /* PIOC clock enable. */
/* Enable output for LED. */
PIOC->PIO_WPMR = PIO_WPMR_WPKEY_PASSWD; /* Enable writing to registers. */
PIOC->PIO_PER = PIO_PER_P10 | PIO_PER_P17; /* Enable pio 10, 17. */
PIOC->PIO_OER = PIO_OER_P10 | PIO_OER_P17; /* Set pio10 and 17 as output. */
PIOC->PIO_SODR = PIO_SODR_P10; /* Set pio10. */
PIOC->PIO_CODR = PIO_CODR_P17; /* Clear pio17 . */
但绝对没有任何反应。我错过了什么吗?
PIOC 10 和 17 处应该有用户 LED。
电路板原理图:
http://www.atmel.com/webdoc/sam4s16xplained/sam4s16xplained.boardScematics.section_ggo_tyg_xf.html
问题不在代码中,而在用于对电路板编程的 Atmel 工具中。我一直在使用 SAM-BA In-system Programmer 对电路板进行编程,但由于某种原因,它无法更改闪存的内容。即使在内存视图中手动设置单个也会失败。
我转而尝试了 Seggers JLink 软件并执行了以下步骤:
- 使用 Atmel Studio 6 更新电路板上的 JLink 驱动程序(此步骤需要 windows)。
- 从 Segger 下载了 Linux 的 J-Link 软件包:https://www.segger.com/jlink-software.html。
- 使用JLinkExe 对开发板进行编程,如下所示:
- 确保 JP25 已断开连接 - 只有 sam-ba 需要。
- 通过 usb 与 jtag 连接器连接。
- 启动JLinkExe
在 JLink 终端执行:
JLink> device at91sam4s16c
JLink> loadbin <target.bin>, 0x400000
有时我需要在编程后重新启动电路板才能工作。现在也可以使用 Segger 工具进行调试。使用 JLinkGDBServer 启动 gdb 服务器并使用 arm-none-eabi-gdb 连接:
(gdb) target remote :2331
(gdb) file <target.elf>
这个问题可能很明显,很愚蠢,但我想不出答案。
我正在尝试为 Atmel 的 sam4s xplained 开发板创建一个简单的 makefile 项目。
我是 ARM 的新手,我对如何让这些东西工作感到有点迷茫。这是我试图让 LED 工作的方法:
/* Enable clock for PIOC. */
PMC->PMC_WPMR = PMC_WPMR_WPKEY_PASSWD;
PMC->PMC_PCER0 = PMC_PCER0_PID13; /* PIOC clock enable. */
/* Enable output for LED. */
PIOC->PIO_WPMR = PIO_WPMR_WPKEY_PASSWD; /* Enable writing to registers. */
PIOC->PIO_PER = PIO_PER_P10 | PIO_PER_P17; /* Enable pio 10, 17. */
PIOC->PIO_OER = PIO_OER_P10 | PIO_OER_P17; /* Set pio10 and 17 as output. */
PIOC->PIO_SODR = PIO_SODR_P10; /* Set pio10. */
PIOC->PIO_CODR = PIO_CODR_P17; /* Clear pio17 . */
但绝对没有任何反应。我错过了什么吗?
PIOC 10 和 17 处应该有用户 LED。
电路板原理图: http://www.atmel.com/webdoc/sam4s16xplained/sam4s16xplained.boardScematics.section_ggo_tyg_xf.html
问题不在代码中,而在用于对电路板编程的 Atmel 工具中。我一直在使用 SAM-BA In-system Programmer 对电路板进行编程,但由于某种原因,它无法更改闪存的内容。即使在内存视图中手动设置单个也会失败。
我转而尝试了 Seggers JLink 软件并执行了以下步骤:
- 使用 Atmel Studio 6 更新电路板上的 JLink 驱动程序(此步骤需要 windows)。
- 从 Segger 下载了 Linux 的 J-Link 软件包:https://www.segger.com/jlink-software.html。
- 使用JLinkExe 对开发板进行编程,如下所示:
- 确保 JP25 已断开连接 - 只有 sam-ba 需要。
- 通过 usb 与 jtag 连接器连接。
- 启动JLinkExe
在 JLink 终端执行:
JLink> device at91sam4s16c
JLink> loadbin <target.bin>, 0x400000
有时我需要在编程后重新启动电路板才能工作。现在也可以使用 Segger 工具进行调试。使用 JLinkGDBServer 启动 gdb 服务器并使用 arm-none-eabi-gdb 连接:
(gdb) target remote :2331
(gdb) file <target.elf>