Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - tha

Pages: [1] 2 3 ... 263
1
ARM Processors / Re: STM32F1 DEBUG
« on: June 20, 2021, 11:22:25 am »
31.7 JTAG debug port

A standard JTAG state machine ถูกจัดให้มีใช้กับ a 4-bit instruction register (IR) และ five data registers (สำหรับรายละเอียดเต็ม, อ้างอิงถึง the Cortex®-M3 r1p1 Technical Reference Manual (TRM), สำหรับการอ้างอิง, ดู Section 31.2).




2
ARM Processors / Re: STM32F1 DEBUG
« on: June 20, 2021, 10:50:22 am »
31.6.3 Cortex®-M3 TAP

The TAP ของ the Arm® Cortex®-M3 รวม a JTAG ID code. ID code นี้คือ the Arm® default one และยังไม่ถูกแก้ไขเลย. code นี้เข้าถึงได้เฉพาะโดย the JTAG Debug Port, มันคือ 0x3BA00477 (ตรงกันกับ Cortex®-M3 r1p1-01rel0, ดู Section 31.2).

31.6.4 Cortex®-M3 JEDEC-106 ID code

The Arm® Cortex®-M3 รวม a JEDEC-106 ID code. มันอยู่ในตำแหน่งใน the 4 KB ROM table ที่แม็ปบน the internal PPB bus ที่ address 0xE00FF000_0xE00FFFFF.

code นี้เข้าถึงได้โดย the JTAG Debug Port (4 to 5 pins) หรือโดย the SW Debug Port (two pins) หรือโดย the user software.

3
ARM Processors / Re: STM32F1 DEBUG
« on: June 20, 2021, 10:18:52 am »
31.6.2 Boundary scan TAP

JTAG ID code


The TAP ของ the STM32F10xxx BSC (boundary scan) รวม a JTAG ID code เท่ากับ
•    In low-density devices:
      –    0x06412041 = Revision A
•    In medium-density devices:
      –    0x06410041 = Revision A
      –    0x16410041 = Revision B, Revision Z and Revision Y
•    In high-density devices:
      –    0x06414041 = Revision A, Revision Z and Revision Y
•    In XL-density devices
      –    0x06430041 = Revision A
•    In connectivity line devices:
      –    0x06418041 = Revision A and Revision Z

4
ARM Processors / Re: STM32F1 DEBUG
« on: June 20, 2021, 09:48:24 am »
31.6 ID codes and locking mechanism

มีหลาย ID codes ภายใน the STM32F10xxx MCUs. ST แนะนำอย่างแข็งขัน tools designers ให้ล็อค debuggers ของพวกมันโดยใช้ the MCU DEVICE ID code มีตำแหน่งใน the external PPB memory แม็ปที่ address 0xE0042000

31.6.1 MCU device ID code

The STM32F10xxx MCUs รวม an MCU ID code. ID นี้ระบุ the ST MCU partnumber และ the die revision. มันเป็นส่วนหนึ่งของ the DBG_MCU component และถูกแม็ปบน the external PPB bus (ดู Section 31.16). code นี้เข้าถึงได้โดยใช้ the JTAG debug port (สี่หรือห้า pins) หรือ the SW debug port (สอง pins) หรือโดย the user software. มันเข้าถึงได้แม้ในขณะที่ the MCU อยู่ภายใต้ system reset.

มีเพียง the DEV_ID[11:0] ที่ถูกใช้สำหรับระบุตัวตนโดย the debugger/programmer tools.



Bits 31:16 REV_ID[15:0] Revision identifier
ฟิลด์นี้แสดงให้เห็น the revision of the device:
In low-density devices:
   – 0x1000 = Revision A
In medium-density devices:
   – 0x0000 = Revision A
   – 0x2000 = Revision B
   – 0x2001 = Revision Z
   – 0x2003 = Revision 1, 2, 3, X or Y
In high-density devices:
   – 0x1000 = Revision A or 1
   – 0x1001 = Revision Z
   – 0x1003 = Revision 1, 2, 3, X or Y
In XL-density devices:
   – 0x1000 = Revision A or 1
In connectivity line devices:
   – 0x1000 = Revision A
   – 0x1001 = Revision Z

Bits 15:12 Reserved, must be kept at reset value.

Bits 11:0 DEV_ID[11:0]: Device identifier
ฟิลด์นี้แสดงให้เห็น the device ID.
For low-density devices, the device ID is 0x412
For medium-density devices, the device ID is 0x410
For high-density devices, the device ID is 0x414
For XL-density devices, the device ID is 0x430
For connectivity devices, the device ID is 0x418

5
ARM Processors / Re: STM32F1 DEBUG
« on: June 20, 2021, 07:43:00 am »
31.5 STM32F10xxx JTAG TAP connection

The STM32F10xxx MCUs รวม two serially connected JTAG TAPs, the boundary scan TAP (IR เป็น 5-bit wide) และ the Cortex®-M3 TAP (IR เป็น 4-bit wide).

เพื่อเข้าถึง the TAP ของ the Cortex®-M3 สำหรับ debug purposes:
1.    อันดับแรก, จำเป็นต้องเลื่อน the BYPASS instruction ของ the boundary scan TAP.
2.    จากนั้น, สำหรับแต่ละ IR shift, the scan chain บรรจุ 9 bits (=5+4) และ the unused TAP instruction ต้องถูกเลื่อนในการ
       ใช้ the BYPASS instruction
3.    สำหรับแต่ละ data shift, the unused TAP, ซึ่งอยู่ใน BYPASS mode, เพิ่ม 1 extra data bit ใน the data scan chain.

Note: สำคัญ: เมื่อ Serial-Wire ถูกเลือกโดยใช้ the dedicated Arm® JTAG sequence, the boundary scan TAP จะถูกปิดการใช้งานโดยอัตโนมัติ (JTMS ถูกบังคับ high).


6
ARM Processors / Re: STM32F1 DEBUG
« on: June 19, 2021, 07:59:20 am »
31.4.4 การใช้ serial wire และการปลดปล่อย the unused debug pins ไปเป็น GPIOs

เพื่อใช้ the serial wire DP เพื่อปลดปล่อยบาง GPIOs, the user software ต้องเซ็ต SWJ_CFG=010 เพียงหลังจากรีเซ็ต. นี้ปลดปล่อย PA15, PB3 and PB4 ซึ่งบัดนี้มาเป็นมีให้ใช้ประโยชน์เป็น GPIOs.

เมื่อทำการดีบัก, the host จะดำเนินการดังต่อไปนี้:
•    ภายใต้ system reset, ทุก SWJ pins ถูกกำหนด (JTAG-DP + SW-DP).
•    ภายใต้ system reset, the debugger host ส่ง the JTAG sequence เพื่อสวิทช์จาก the JTAG-DP ไปเป็น the SW-DP.
•    ยังคงอยู่ภายใต้ system reset, the debugger เซ็ต a breakpoint บน vector reset.
•    The system reset ถูกปลดปล่อยและ the Core หยุดทำงาน.
•    the debug communications ทั้งหมดจากจุดนี้ถูกทำโดยใช้ the SW-DP. JTAG pins อื่นๆสามารถถูกกำหนดใหม่เป็น GPIOs โดย
      the user software.

Note: สำหรับ user software designs, โปรดทราบว่า :
เพื่อปลดปล่อย the debug pins, โปรดจำไว้ว่าพวกมันจะถูกกำหนดค่าเป็นอันดับแรกทั้งใน input-pull-up (nTRST, TMS, TDI) หรือ pull-down (TCK) หรือ output tristate (TDO) เป็นระยะเวลาหนึ่งหลังจากรีเซ็ตจนกระทั่งทันทีที่ the user software ปลดปล่อย the pins.
เมื่อ debug pins (JTAG or SW or TRACE) ถูกแม็ป, การเปลี่ยน the corresponding IO pin configuration ใน the IOPORT controller จะไม่มีผลอะไร.

7
ARM Processors / Re: STM32F1 DEBUG
« on: June 18, 2021, 05:25:42 pm »
31.4.3 Internal pull-up and pull-down on JTAG pins

มันจำเป็นเพื่อให้แน่ใจว่า the JTAG input pins ไม่ได้ลอยเนื่องจากพวกมันถูกต่อโดยตรงถึง flip-flops เพื่อควบคุม the debug mode features. ความระมัดระวังเป็นพิเศษต้องถูกใช้กับ the SWCLK/TCK pin ซึ่งถูกต่อโดยตรงถึง the clock ของบาง flip-flops เหล่านี้.

เพื่อหลีกเลี่ยงระดับ IO ที่ไม่มีการควบคุมใดๆ, the device ฝัง internal pull-ups และ pull-downs บน the JTAG input pins:
•    NJTRST: Internal pull-up
•    JTDI: Internal pull-up
•    JTMS/SWDIO: Internal pull-up
•    TCK/SWCLK: Internal pull-down

เมื่อ a JTAG IO ถูกปลดปล่อยโดย the user software, the GPIO controller จะควบคุมอีกครั้ง. The reset states ของ the GPIO control registers ทำให้ the I/Os อยู่ใน the equivalent state:
•    NJTRST: Input pull-up
•    JTDI: Input pull-up
•    JTMS/SWDIO: Input pull-up
•    JTCK/SWCLK: Input pull-down
•    JTDO: AF output floatingInput floating

The software สามารถจากนั้นใช้ I/Os เหล่านี้เป็น standard GPIOs.

Note: The JTAG IEEE standard แนะนำให้เพิ่ม pull-ups บน TDI, TMS and nTRST แต่ไม่มีคำแนะนำพิเศษสำหรับ TCK. อย่างไรก็ตาม, สำหรับ JTCK, the device จำเป็นต้องมี an integrated pull-down.

การมี embedded pull-ups and pull-downs ทำให้ไม่จำเป็นต้องเพิ่ม external resistors.

8
ARM Processors / Re: STM32F1 DEBUG
« on: June 18, 2021, 11:43:34 am »
31.4.2 Flexible SWJ-DP pin assignment

หลังจาก RESET (SYSRESETn หรือ PORESETn), ห้าขาทั้งหมดถูกใช้สำหรับ the SWJ-DP ถูกรับมอบหมายเป็นขาที่อุทิศให้สามารถใช้ได้ทันทีโดย the debugger host (บันทึกไว้ว่า the trace outputs ไม่ถูกมอบหมายยกเว้นหากถูกโปรแกรมอย่างขัดเจนโดย the debugger host).

อย่างไรก็ตาม, the STM32F10xxx MCU จัดให้มีใช้ the AF remap and debug I/O configuration register (AFIO_MAPR) register เพื่อปิดการใช้งานบางส่วนหรือทั้งหมดของ the SWJ-DP port และดังนั้นปลดปล่อยขาที่เกี่ยวข้องนี้สำหรับ General Purpose IOs usage.  register นี้ถูกแม็ปบน an APB bridge ที่เชื่อมต่อถึง the Cortex®-M3 System Bus. การโปรแกรมของ register นี้ถูกทำโดย the user software program และไม่ใช่ the debugger host.

สามบิตควบคุมยอมให้การกำหนดค่าของ the SWJ-DP pin assignments. บิตเหล่านี้ถูกรีเซ็ตโดย the System Reset.
•    AFIO_MAPR (@ 0x40010004 in the STM32F10xxx MCU)
      –    READ: APB - No Wait State
      –    WRITE: APB - 1 Wait State ถ้า the write buffer ของ the AHB-APB bridge เต็ม.
      Bit 26:24= SWJ_CFG[2:0]
      ถูกเซ็ตและถูกเคลียร์โดย software.

บิตเหล่านี้ถูกใช้เพื่อกำหนดค่าจำนวนของขาที่ถูกมอบหมายต่อ the SWJ debug port. จุดมุ่งหมายก็คือปลดปล่อยมากที่สุดเท่าที่เป็นได้จำนวนของขาให้ถูกใช้เป็น General Purpose IOs ถ้ามีการใช้ขนาดเล็กสำหรับ the debug port.

สถานะเริ่มต้นหลังจากรีเซ็ตคือ “000” (พินทั้งหมดถูกกำหนดสำหรับ a full JTAG-DP connection). มีเพียงหนึ่งของ the 3 bits สามารถถูกเซ็ต (ห้ามเซ็ตมากกว่าหนึ่งบิต).



Note: เมื่อ the APB bridge write buffer เต็ม, จะต้องใช้ one extra APB cycle เมื่อเขียน the AFIO_MAPR register. นี้เป็นเพราะว่าการปิดใช้งานของ the JTAGSW pins ถูกทำในสองไซเคิลเพื่อรับประกัน a clean level บน the nTRST และ TCK input signals ของ the core.
•    Cycle 1: the JTAGSW input signals ไปยัง the core ถูกผูกกับ 1 หรือ 0 (กับ 1 สำหรับ nTRST, TDI และ TMS, กับ 0 สำหรับ
      TCK)
•    Cycle 2: the GPIO controller รับ the control signals ของ the SWJTAG IO pins (เช่น controls of direction, pull-
      up/down, Schmitt trigger activation, ฯลฯ.).

Pages: [1] 2 3 ... 263