5.3.5. 使用示例

下面列出的示例是不完整的源代码摘录,其中包含各种嵌入式控制标记和生成的 GUI 组件。

总线配置示例

Example 5.1 演示了用于修改以下函数的第二个参数的控制标记:

WRITE_MEM(0xFFE00000, 0x2034A9)

这由 <e1.x><o1.x> 控制标记中的索引 1 定义。

Note

如果要嵌入用于以下函数的第一个参数的控制标记,则使用索引 0(例如 <e0.x>):

WRITE_MEM(0xFFE00000, 0x2034A9)

Example 5.1. 总线配置控制标记

//C example
//*****************************************************************************
// <propertieseditor>
//*****************************************************************************
// <h> External Bus Interface (EBI)
//   <e1.13> CSRO: Enable Chip Select 0
//     <o1.20..31> BA: Base Address <0x0-0xFFF00000:0x100000> <#/0x100000>
//                 <i> Start Address for Chip Select Signal
//
//     NOTE: Base Address works with bits 20 to 31 of second argument producing
//     spin box with range and step values. Applies calculation before parsing.
//
//     <o1.7..8>   PAGES: Page Size      <0=> 1M Byte    <1=> 4M Bytes
//                                       <2=> 16M Bytes  <3=> 64M Bytes
//                 <i> Selects Active Bits in Base Address
//     <o1.0..1>   DBW: Data Bus Width   <1=> 16-bit     <2=> 8-bit
//     <o1.12>     BAT: Byte Access Type <0=> Byte-write
//                                       <1=> Byte-select
//     <e1.5>      WSE: Enable Wait State Generation
//       <o1.2..4>   NWS: Number of Standard Wait States <1-8> <#-1>
//     </e>
//     <o1.9..11>  TDF: Data Float Output Time <0-7>
//                 <i> Number of Cycles Added after the Transfer
//   </e>
// </h>
WRITE_MEM(0xFFE00000, 0x2034A9);   // EBI_CSR0: Flash
//*****************************************************************************
// </propertieseditor>
//*****************************************************************************

Figure 5.1 显示此源代码生成的 GUI 组件。

Figure 5.1. 总线配置 GUI 组件

总线配置 GUI 组件

作为一种标示,此示例中嵌入的控制标记在每个说明前都提供了符号名称。Figure 5.2 列出了这些符号名称并将这些名称与其位位置关联。

Figure 5.2. 总线配置位位置


密码字符串示例

Example 5.2 中的示例代码生成如Figure 5.3 所示的 GUI 组件。

Example 5.2. 密码字符串控制标记

//C example
//*****************************************************************************
// <propertieseditor>
//*****************************************************************************
// <o> Program Entry Point
PC = 0x4000000;

// <s> Change ID
// <s1.30> Change Password String
#define ID  "My User ID"
char pw[] = "My Password";
//*****************************************************************************
// </propertieseditor>
//*****************************************************************************

Figure 5.3. 密码字符串 GUI 组件

密码字符串 GUI 组件

数据读取协议示例

Example 5.3 中的示例代码生成如Figure 5.4 所示的 GUI 组件。

Example 5.3. 数据读取协议控制标记

//C example
//*****************************************************************************
// <propertieseditor>
//*****************************************************************************
//   <q1.4>        DRP: Data Read Protocol
//                      <0=> Standard Read
//                      <1=> Early Read
DATAREAD(0xFFE00024, 0x10);   // EBI_MCR:  Data Read Protocol
//*****************************************************************************
// </propertieseditor>
//*****************************************************************************

Figure 5.4. 数据读取协议 GUI 组件

数据读取协议 GUI 组件

堆栈配置示例

Example 5.4 中的示例代码生成如Figure 5.5 所示的 GUI 组件。

Example 5.4. 堆栈配置控制标记

; Assembler example
;*****************************************************************************
; <propertieseditor> 
;*****************************************************************************
; <h> Stack Configuration (Stack Sizes in Bytes)
;   <o0> Undefined Mode      <0x0-0xFFFFFFF0:8>
;   <o1> Supervisor Mode     <0x0-0xFFFFFFF0:8>
;   <o2> Abort Mode          <0x0-0xFFFFFFF0:8>
;   <o3> Fast Interrupt Mode <0x0-0xFFFFFFF0:8>
;   <o4> Interrupt Mode      <0x0-0xFFFFFFF0:8>
;   <o5> User/System Mode    <0x0-0xFFFFFFF0:8>
; </h>

UND_Stack_Size  EQU     0xe0
SVC_Stack_Size  EQU     0x1000
ABT_Stack_Size  EQU     0xa8
FIQ_Stack_Size  EQU     0x40
IRQ_Stack_Size  EQU     0x68
USR_Stack_Size  EQU     0x3f8

Stack_Size      EQU     (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
                         IQ_Stack_Size + IRQ_Stack_Size + USR_Stack_Size)

                AREA    STACK, NOINIT, READWRITE, ALIGN=4
Stack_Mem       SPACE   Stack_Size

Stack_Top       EQU     Stack_Mem + Stack_Size
;******************************************************************************
; </propertieseditor>
;******************************************************************************

Figure 5.5. 堆栈配置 GUI 组件

堆栈配置 GUI 组件

VPBDIV 定义示例

Example 5.5 中的示例代码生成如Figure 5.6 所示的 GUI 组件。

Example 5.5. VPBDIV 定义控制标记

; Assembler example
*****************************************************************************
; <propertieseditor> 
;*****************************************************************************
; VPBDIV definitions
VPBDIV          EQU     0xE01FC100      ; VPBDIV Address

; <e> VPBDIV Setup
; <i> Peripheral Bus Clock Rate
;
;    NOTE: Option tag <e> uses index 0 as default if not specified
;          Enables or disables group of options using setup variable
;
;     <o1.0..1>   VPBDIV: VPB Clock
;                 <0=> VPB Clock = CPU Clock / 4
;                 <1=> VPB Clock = CPU Clock
;                 <2=> VPB Clock = CPU Clock / 2
;     <o1.4..5>   XCLKDIV: XCLK Pin
;                 <0=> XCLK Pin = CPU Clock / 4
;                 <1=> XCLK Pin = CPU Clock
;                 <2=> XCLK Pin = CPU Clock / 2
; </e>
VPBDIV_SETUP    EQU     0
VPBDIV_Val      EQU     0x20
;******************************************************************************
; </propertieseditor>
;******************************************************************************

Figure 5.6 显示一些因禁用了主组标题而显示为灰色的 GUI 组件。 若要启用该组,可以单击 VPBDIV Setup 的 GUI 框,或编辑相关代码,如下所示:

VPBDIV_SETUP    EQU     1

Figure 5.6. VPBDIV 定义 GUI 组件

VPBDIV 定义 GUI 组件

Copyright © 2006-2008 ARM Limited. All rights reserved。ARM DUI 0330EC
Non-Confidential