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 软件并执行了以下步骤:

  1. 使用 Atmel Studio 6 更新电路板上的 JLink 驱动程序(此步骤需要 windows)。
  2. 从 Segger 下载了 Linux 的 J-Link 软件包:https://www.segger.com/jlink-software.html
  3. 使用JLinkExe 对开发板进行编程,如下所示:
    1. 确保 JP25 已断开连接 - 只有 sam-ba 需要。
    2. 通过 usb 与 jtag 连接器连接。
    3. 启动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>