embeded/FPGA - ALTERA2026. 3. 16. 23:49

de-nano 이후로 오랫만에 보는 system builder

HPS 는 왜 이렇게 소심해 ㅋㅋ

 

그 와중에 GPIO-0 / 1 에 옵션이 궁금해서 눌러보는데

 

그게는 디스플레이 / 카메라 / ADC & DAC 정도 분류로 추가가 가능한데 은근히 비싸다.

 

240x320 display

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=65&No=892] LT24


7" 800x480 with 5 point MT

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=989#contents] MTL2

 

7" 800x480 with 5 point MT

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=168&No=653] MTL

 

4.3" 800x480

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=213] LTM

 

OV8865 8M 1/3.2" MIPI to parallel(TC358748XBG)

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=1011&PartNo=2#heading] D8M-GPIO

 

5M @ 15fps parallel 12bit

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=281] D5M

 

AD9248  ADC 65MSPS

AD9767ASTZ DAC 125MSPS 

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=73&No=278#contents] ADA

 

'embeded > FPGA - ALTERA' 카테고리의 다른 글

quartus prime standard 실행  (0) 2026.03.17
quartus prime 설치 standard / lite  (0) 2026.03.17
sof - SRAM Object File  (0) 2026.03.15
JIC - JTAG Indirect Configuration  (0) 2026.03.15
LTC connector?  (0) 2026.03.15
Posted by 구차니
embeded/FPGA - ALTERA2026. 3. 15. 00:45

'embeded > FPGA - ALTERA' 카테고리의 다른 글

quartus prime 설치 standard / lite  (0) 2026.03.17
de1-soc daughter board  (0) 2026.03.16
JIC - JTAG Indirect Configuration  (0) 2026.03.15
LTC connector?  (0) 2026.03.15
de0-nano용 nios v 예제  (0) 2026.03.14
Posted by 구차니
embeded/FPGA - ALTERA2026. 3. 15. 00:43

'embeded > FPGA - ALTERA' 카테고리의 다른 글

de1-soc daughter board  (0) 2026.03.16
sof - SRAM Object File  (0) 2026.03.15
LTC connector?  (0) 2026.03.15
de0-nano용 nios v 예제  (0) 2026.03.14
DE1-SoC 구매 도착!  (0) 2026.03.13
Posted by 구차니
embeded/FPGA - ALTERA2026. 3. 15. 00:40

DE1-SoC 에서 LTC 커넥터라는 말이 나와서

이게 멀 의미하는건가 싶어 검색하는데 딱히 보이지 않는다.

 

그냥 디~~게 평범한 2x7 배열을 가진 핀헤더 같은데 왜 LTC 인가..

 

GPIO / I2C / SPI 연결되는 평범한 녀석인데..

3.7.8 LTC Connector
The board has a 14-pin header, which is originally used to communicate with various daughter cards from Linear Technology. It is connected to the SPI Master and I2C ports of HPS. The communication with these two protocols is bi-directional. The 14-pin header can also be used for GPIO, SPI, or I2C based communication with the HPS. Connections between the HPS and LTC connector are shown in Figure 3-37, and the pin assignment of LTC connector is listed in Table 3-31.

 

Linear Technology Co. 줄여서 LTC 라고 하는건가?

 

[링크 : https://www.analog.com/media/en/technical-documentation/user-guides/dc1223a-bfa.pdf]

 

2016년 ADI(Analog Devices Inc.) 가 Linear technology 인수.

그래서 지금와서 칩셋 찾으면 Linear Technology 인데 도메인이 analog devices로 나왔나 보군..

[링크 : https://www.yna.co.kr/view/AKR20160727122200009]

'embeded > FPGA - ALTERA' 카테고리의 다른 글

sof - SRAM Object File  (0) 2026.03.15
JIC - JTAG Indirect Configuration  (0) 2026.03.15
de0-nano용 nios v 예제  (0) 2026.03.14
DE1-SoC 구매 도착!  (0) 2026.03.13
terasic de1 soc openCL 문서  (0) 2025.06.27
Posted by 구차니
embeded/FPGA - ALTERA2026. 3. 14. 23:56

버전 정보 찾아두면 좀 편하겠지

 

These are some NIOS-V cpu examples implemented and running on a Terasic DE0-NANO board (Cyclone IV - EP4C22F17C6) (Built using Intel Quartus 23.1.1 Standard Edition)

[링크 : https://github.com/monkstein88/niosv-example-projects]

'embeded > FPGA - ALTERA' 카테고리의 다른 글

JIC - JTAG Indirect Configuration  (0) 2026.03.15
LTC connector?  (0) 2026.03.15
DE1-SoC 구매 도착!  (0) 2026.03.13
terasic de1 soc openCL 문서  (0) 2025.06.27
terasic sockit  (0) 2023.11.06
Posted by 구차니
embeded/Cortex-M7 STM2026. 3. 13. 15:19

cubeide로 생성해서 일단 비교

 

 

CM7 ld

/*
******************************************************************************
**
**  File        : LinkerScript.ld
**
**  Author      : STM32CubeIDE
**
**  Abstract    : Linker script for STM32H7 series
**                      1024Kbytes FLASH
**                      800Kbytes RAM
**
**                Set heap size, stack size and stack location according
**                to application requirements.
**
**                Set memory bank area and size if external memory is used.
**
**  Target      : STMicroelectronics STM32
**
**  Distribution: The file is distributed as is without any warranty
**                of any kind.
**
*****************************************************************************
** @attention
**
** Copyright (c) 2024 STMicroelectronics.
** All rights reserved.
**
** This software is licensed under terms that can be found in the LICENSE file
** in the root directory of this software component.
** If no LICENSE file comes with this software, it is provided AS-IS.
**
*****************************************************************************
*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = ORIGIN(RAM_D1) + LENGTH(RAM_D1); /* end of "RAM_D1" Ram type memory */

_Min_Heap_Size = 0x200; /* required amount of heap  */
_Min_Stack_Size = 0x400; /* required amount of stack */

/* Memories definition */
MEMORY
{
  RAM_D1 (xrw)   : ORIGIN = 0x24000000, LENGTH =  512K
  FLASH   (rx)   : ORIGIN = 0x08000000, LENGTH = 1024K    /* Memory is divided. Actual start is 0x08000000 and actual length is 2048K */
  DTCMRAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 128K
  RAM_D2 (xrw)   : ORIGIN = 0x30000000, LENGTH = 288K
  RAM_D3 (xrw)   : ORIGIN = 0x38000000, LENGTH = 64K
  ITCMRAM (xrw)  : ORIGIN = 0x00000000, LENGTH = 64K
}

/* Sections */
SECTIONS
{
  /* The startup code into "FLASH" Rom type memory */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } >FLASH

  /* The program code and other data into "FLASH" Rom type memory */
  .text :
  {
    . = ALIGN(4);
    *(.text)           /* .text sections (code) */
    *(.text*)          /* .text* sections (code) */
    *(.glue_7)         /* glue arm to thumb code */
    *(.glue_7t)        /* glue thumb to arm code */
    *(.eh_frame)

    KEEP (*(.init))
    KEEP (*(.fini))

    . = ALIGN(4);
    _etext = .;        /* define a global symbols at end of code */
  } >FLASH

  /* Constant data into "FLASH" Rom type memory */
  .rodata :
  {
    . = ALIGN(4);
    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
    . = ALIGN(4);
  } >FLASH

  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    . = ALIGN(4);
    *(.ARM.extab* .gnu.linkonce.armextab.*)
    . = ALIGN(4);
  } >FLASH
  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    . = ALIGN(4);
    __exidx_start = .;
    *(.ARM.exidx*)
    __exidx_end = .;
    . = ALIGN(4);
  } >FLASH

  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    . = ALIGN(4);
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array*))
    PROVIDE_HIDDEN (__preinit_array_end = .);
    . = ALIGN(4);
  } >FLASH

  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    . = ALIGN(4);
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
    . = ALIGN(4);
  } >FLASH

  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    . = ALIGN(4);
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT(.fini_array.*)))
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
    . = ALIGN(4);
  } >FLASH

  /* Used by the startup to initialize data */
  _sidata = LOADADDR(.data);

  /* Initialized data sections into "RAM" Ram type memory */
  .data :
  {
    . = ALIGN(4);
    _sdata = .;        /* create a global symbol at data start */
    *(.data)           /* .data sections */
    *(.data*)          /* .data* sections */
    *(.RamFunc)        /* .RamFunc sections */
    *(.RamFunc*)       /* .RamFunc* sections */

    . = ALIGN(4);
    _edata = .;        /* define a global symbol at data end */
  } >RAM_D1 AT> FLASH

  /* Uninitialized data section into "RAM" Ram type memory */
  . = ALIGN(4);
  .bss :
  {
    /* This is used by the startup in order to initialize the .bss section */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
  } >RAM_D1

  /* User_heap_stack section, used to check that there is enough "RAM" Ram  type memory left */
  ._user_heap_stack :
  {
    . = ALIGN(8);
    PROVIDE ( end = . );
    PROVIDE ( _end = . );
    . = . + _Min_Heap_Size;
    . = . + _Min_Stack_Size;
    . = ALIGN(8);
  } >RAM_D1

  /* Remove information from the compiler libraries */
  /DISCARD/ :
  {
    libc.a ( * )
    libm.a ( * )
    libgcc.a ( * )
  }

  .ARM.attributes 0 : { *(.ARM.attributes) }
}

 

CM4 ld

/*
******************************************************************************
**
**  File        : LinkerScript.ld
**
**  Author      : STM32CubeIDE
**
**  Abstract    : Linker script for STM32H7 series
**                1024Kbytes FLASH and 288Kbytes RAM
**
**                Set heap size, stack size and stack location according
**                to application requirements.
**
**                Set memory bank area and size if external memory is used.
**
**  Target      : STMicroelectronics STM32
**
**  Distribution: The file is distributed as is, without any warranty
**                of any kind.
**
*****************************************************************************
** @attention
**
** Copyright (c) 2024 STMicroelectronics.
** All rights reserved.
**
** This software is licensed under terms that can be found in the LICENSE file
** in the root directory of this software component.
** If no LICENSE file comes with this software, it is provided AS-IS.
**
****************************************************************************
*/

/* Entry Point */
ENTRY(Reset_Handler)

/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x200;      /* required amount of heap  */
_Min_Stack_Size = 0x400; /* required amount of stack */

/* Specify the memory areas */
MEMORY
{
FLASH (rx)     : ORIGIN = 0x08100000, LENGTH = 1024K
RAM (xrw)      : ORIGIN = 0x10000000, LENGTH = 288K
}

/* Define output sections */
SECTIONS
{
  /* The startup code goes first into FLASH */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } >FLASH

  /* The program code and other data goes into FLASH */
  .text :
  {
    . = ALIGN(4);
    *(.text)           /* .text sections (code) */
    *(.text*)          /* .text* sections (code) */
    *(.glue_7)         /* glue arm to thumb code */
    *(.glue_7t)        /* glue thumb to arm code */
    *(.eh_frame)

    KEEP (*(.init))
    KEEP (*(.fini))

    . = ALIGN(4);
    _etext = .;        /* define a global symbols at end of code */
  } >FLASH

  /* Constant data goes into FLASH */
  .rodata :
  {
    . = ALIGN(4);
    *(.rodata)         /* .rodata sections (constants, strings, etc.) */
    *(.rodata*)        /* .rodata* sections (constants, strings, etc.) */
    . = ALIGN(4);
  } >FLASH

  .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    *(.ARM.extab* .gnu.linkonce.armextab.*)
  } >FLASH
  .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    __exidx_start = .;
    *(.ARM.exidx*)
    __exidx_end = .;
  } >FLASH

  .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array*))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  } >FLASH
  .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
  } >FLASH
  .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT(.fini_array.*)))
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
  } >FLASH

  /* used by the startup to initialize data */
  _sidata = LOADADDR(.data);

  /* Initialized data sections goes into RAM, load LMA copy after code */
  .data :
  {
    . = ALIGN(4);
    _sdata = .;        /* create a global symbol at data start */
    *(.data)           /* .data sections */
    *(.data*)          /* .data* sections */
    *(.RamFunc)        /* .RamFunc sections */
    *(.RamFunc*)       /* .RamFunc* sections */

    . = ALIGN(4);
    _edata = .;        /* define a global symbol at data end */
  } >RAM AT> FLASH


  /* Uninitialized data section */
  . = ALIGN(4);
  .bss :
  {
    /* This is used by the startup in order to initialize the .bss section */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
  } >RAM

  /* User_heap_stack section, used to check that there is enough RAM left */
  ._user_heap_stack :
  {
    . = ALIGN(8);
    PROVIDE ( end = . );
    PROVIDE ( _end = . );
    . = . + _Min_Heap_Size;
    . = . + _Min_Stack_Size;
    . = ALIGN(8);
  } >RAM



  /* Remove information from the standard libraries */
  /DISCARD/ :
  {
    libc.a ( * )
    libm.a ( * )
    libgcc.a ( * )
  }

  .ARM.attributes 0 : { *(.ARM.attributes) }
}


'embeded > Cortex-M7 STM' 카테고리의 다른 글

stm32h757 메모리(SRAM) 구조  (0) 2026.03.13
stm32f7 dual bank flash  (0) 2026.02.03
stm32f746g-disco with semtech sx1276 and lvgl  (0) 2026.02.03
modbus rtu coil read  (0) 2024.10.10
stm32 __weak  (0) 2024.10.08
Posted by 구차니
embeded/Cortex-M7 STM2026. 3. 13. 15:15

링커 스크립트를 보면 아래와 같이 메모리가 희한하게 많다.

/* Memories definition */
MEMORY
{
  RAM_D1 (xrw)   : ORIGIN = 0x24000000, LENGTH =  512K
  BOOT   (rx)   : ORIGIN = 0x08000000, LENGTH = 128K    
  DTCMRAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 128K
  RAM_D2 (xrw)   : ORIGIN = 0x30000000, LENGTH = 288K
  RAM_D3 (xrw)   : ORIGIN = 0x38000000, LENGTH = 64K
  ITCMRAM (xrw)  : ORIGIN = 0x00000000, LENGTH = 64K
}

 

아무래도 M7 에는 TCM 으로 바로 붙어 있어서 가장 빠르게 접근이 될 거고

M4의 경우 AHB 를 거쳐야 해서 M7의 TCM 보다는 접근 속도가 느릴듯 하다.

 

D1 domain 에는 Cortex-M7에 붙어있는 ITCM 64K / DTCM 128K(TCM - Tightly Coupled Memory)

D2 domain 에는 Cortex-M4에 가까운 SRAM1 128K(I-bus) / SRAM2 128K(D-bus) / SRAM3 32K(S-bus)가 존재한다.

D3 domain 에는 SRAM4 64K / Backup SRAM 4K 가 존재한다.(얘네는 링커에 없다)

3.3.3 Embedded SRAM
All devices feature around 1 Mbyte of RAM with hardware ECC. The RAM is divided as
follows:
• 512 Kbytes of AXI-SRAM mapped onto AXI bus on D1 domain.
• SRAM1 mapped on D2 domain: 128 Kbytes
• SRAM2 mapped on D2 domain: 128 Kbytes
• SRAM3 mapped on D2 domain: 32 Kbytes
• SRAM4 mapped on D3 domain: 64 Kbytes
• 4 Kbytes of backup SRAM
The content of this area is protected against possible unwanted write accesses,
and is retained in Standby or VBAT mode.
• RAM mapped to TCM interface (ITCM and DTCM):
Both ITCM and DTCM RAMs are 0 wait state memories. They can be accessed either
from the Arm® Cortex®-M7 CPU or the MDMA (even in Sleep mode) through a specific
AHB slave of the Cortex®-M7(AHBS):
– 64 Kbytes of ITCM-RAM (instruction RAM)
This RAM is connected to ITCM 64-bit interface designed for execution of critical
real-times routines by the Cortex®-M7.
– 128 Kbytes of DTCM-RAM (2x 64-Kbyte DTCM-RAMs on 2x32-bit DTCM ports)
The DTCM-RAM could be used for critical real-time data, such as interrupt service
routines or stack/heap memory. Both DTCM-RAMs can be used in parallel (for
load/store operations) thanks to the Cortex®-M7 dual issue capability.
The MDMA can be used to load code or data in ITCM or DTCM RAMs. 

[링크 : https://www.st.com/resource/en/datasheet/stm32h757ai.pdf]

 

M4가 M7 보다 메모리 어드레스 비트가 낮은가? 아무튼 아래와 같이 연결이 된다고 한다.

  cortex-M7 cortex-M4
AXI SRAM 0x2400 0000 ?
SRAM1 0x3000 0000 0x1000 0000
SRAM2 0x3002 0000 0x1002 0000
SRAM3 0x3004 0000 0x1004 0000
SRAM4 0x3800 0000 ?

 

2.2.1 Embedded SRAM
The STM32H7 dual‑core devices feature:
• Up to 864 Kbytes of System SRAM
• 128 Kbytes of data TCM RAM, DTCM RAM
• 64 Kbytes of instruction TCM RAM, ITCM RAM
• 4 Kbytes of backup SRAM
The embedded system SRAM is split into five blocks over the three power domains: AXI SRAM, AHB SRAM1,
AHB SRAM2, AHB SRAM3 and AHB SRAM4.
• D1 domain, AXI SRAM:
– AXI SRAM is accessible through D1 domain AXI bus matrix. It is mapped at address 0x2400 0000 and
accessible by all system masters except BDMA. AXI SRAM can be used for application data which are
not allocated in DTCM RAM or reserved for graphic objects (such as frame buffers)
• D2 domain, AHB SRAM:
– AHB SRAM1 is accessible through D2 domain AHB matrix. It is mapped at address 0x3000 0000 and
accessible by all system masters except BDMA. The AHB SRAMs of the D2 domain are also aliased
to an address range below 0x2000 0000 to maintain the Cortex®‑M4 Harvard architecture. The AHB
SRAM1 also mapped at address 0x1000 0000. The AHB SRAM2 also mapped at address 0x1002
0000. The AHB SRAM3 also mapped at address 0x1004 0000. All those AHB SRAMs are accessible
by all system masters through D2 domain AHB matrix. All those AHB SRAMs are accessible by all
system masters through D2 domain AHB matrix.
AHB SRAM1 can be used as DMA buffers to store peripheral input/output data in D2 domain, or as
code location for Cortex®‑M4 CPU (application code available when D1 is powered off). AHB SRAM1
can be used as DMA buffers to store peripheral input/output data in D2 domain, or as code location for
Cortex®‑M4 CPU (application code available when D1 is powered off).
– AHB SRAM2 is accessible through D2 domain AHB matrix. It is mapped at address 0x3002 0000
and accessible by all system masters except BDMA. AHB SRAM2 can be used as DMA buffers to
store peripheral input/output data in D2 domain, or as readwrite segment for application running on
Cortex®‑M4 CPU.
– AHB SRAM3 is accessible through D2 domain AHB matrix is mapped at address 0x3004 0000
and accessible by all system masters except BDMA. AHB SRAM3 can be used as buffers to store
peripheral input/output data for Ethernet and USB, or as shared memory between the two cores.
• D3 domain, AHB SRAM:
– AHB SRAM4 is mapped at address 0x3800 0000 and accessible by most of system masters through
D3 domain AHB matrix. AHB SRAM4 can be used as BDMA buffers to store peripheral input/output
data in D3 domain. It can also be used to retain some application code/data when D1 and D2 domain
in DStandby mode, or as shared memory between the two cores.
The system AHB SRAM can be accessed as bytes, half‑words (16‑bit units) or words (32‑bit units), while the
system AXI SRAM can be accessed as bytes, half‑words, words or doublewords (64‑bit units). These memories
can be addressed at maximum system clock frequency without wait state.

[링크 : https://www.st.com/resource/en/application_note/an5557-stm32h745755-and-stm32h747757-lines-dualcore-architecture-stmicroelectronics.pdf]

'embeded > Cortex-M7 STM' 카테고리의 다른 글

stm32h757 링커 스크립트  (0) 2026.03.13
stm32f7 dual bank flash  (0) 2026.02.03
stm32f746g-disco with semtech sx1276 and lvgl  (0) 2026.02.03
modbus rtu coil read  (0) 2024.10.10
stm32 __weak  (0) 2024.10.08
Posted by 구차니
embeded/FPGA - ALTERA2026. 3. 13. 00:34

Rev. G 로 제품을 받았다.

 

쭈욱 정리하면

rev. c 에서 jtag 체인 변경 blaster -> hps -> hpga -> blaster (응?)

rev E 에서 EPCQ256 에서 EPCS128 (사양 다운)

rev G 에서 AD7928 에서 LTC2308 로 변경 (사양 다운) / Linear 와 microchip 로고 실크 삭제

[링크 : https://www.analog.com/en/products/ad7928.html] 8-Channel, 1 MSPS, 12-Bit ADC with Sequencer

[링크 : https://www.analog.com/en/products/ltc2308.html] Low Noise, 500ksps, 8-Channel, 12-Bit ADC

[링크 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=886]

 

그나저나

micro USB는 그냥 단순(?) UART 라서 전원공급이 안되고

USB Type B는 USB blaster용인데 전원공급은 전혀 안되서 어댑터를 연결(12V 2A) 해야만 하는데

그 와중에 110V 돼지코라 케이블을 찾아야 하는 상황 -_ㅠ

'embeded > FPGA - ALTERA' 카테고리의 다른 글

LTC connector?  (0) 2026.03.15
de0-nano용 nios v 예제  (0) 2026.03.14
terasic de1 soc openCL 문서  (0) 2025.06.27
terasic sockit  (0) 2023.11.06
HSMC(High Speed Mezzanine Card)  (0) 2023.10.02
Posted by 구차니
embeded/Cortex-M3 STM2026. 3. 6. 10:33

이런식으로 코드가 보이길래 했더니 실행이 안되서 디버거 물려보니

그냥 먼가.. 무한루프만 돌고 원하는 곳의 코드가 실행이 되지 않길래

/* USER CODE BEGIN 1 */
typedef  void (*pFunction)(void);
uint32_t JumpAddress;
void (*Jump_To_Application)();
/* USER CODE END 1 */

/* USER CODE BEGIN 2 */
  if (HAL_GPIO_ReadPin(Firmup_Pin_GPIO_Port, Firmup_Pin_Pin) != GPIO_PIN_RESET)
  {
    if (((*(__IO uint32_t*)USBD_DFU_APP_DEFAULT_ADD - 1) & 0x2FFFB000 ) == 0x20000000)
    {
      JumpAddress = *(__IO uint32_t*) (USBD_DFU_APP_DEFAULT_ADD + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      __set_MSP(*(__IO uint32_t*) USBD_DFU_APP_DEFAULT_ADD);
      Jump_To_Application();
    }
  }
  MX_USB_DEVICE_Init();
  /* USER CODE END 2 */

[링크 : https://www.os4all.com/69]

 

먼가 더 필요한거 같아서 검색!

​1. 링커스크립트에서 인터럽트벡터가 있는 .isr_vector 섹션의 위치를 수정
2. SystemInit() 함수에서 SCB->VTOR 레지스터를 변경하고자 하는 섹션의 위치로 수정

SCB->VTOR = (uint32_t)&__isr_vector_addr;

[링크 : https://m.blog.naver.com/chcbaram/222580261732]

[링크 : https://m.blog.naver.com/chcbaram/221347218232]

 

먼가 초기화 하면서 손대는게 점점 많아지는 느낌..

아무튼 스택포인터를 옮겨주고 isr 테이블의 리셋 핸들러를 실행해줌으로서 초기화 하고 전체 프로그램을 다시 돌리는 구조인 듯.

void JumpToBootloader(void) {
    // Deinit HAL and Clocks
    HAL_DeInit();
    HAL_RCC_DeInit();
    
    // Disable all interrupts
    __disable_irq();

    // Disable Systick
    SysTick->CTRL = 0;
    SysTick->LOAD = 0;
    SysTick->VAL = 0;

    // Disable interrupts and clear pending ones
    for (size_t i = 0; i < sizeof(NVIC->ICER)/sizeof(NVIC->ICER[0]); i++) {
        NVIC->ICER[i]=0xFFFFFFFF;
        NVIC->ICPR[i]=0xFFFFFFFF;
    }

    // Re-enable interrupts
    __enable_irq();

    // Map Bootloader (system flash) memory to 0x00000000. This is STM32 family dependant.
    __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH();
    
    // Set embedded bootloader vector table base offset
    WRITE_REG(SCB->VTOR, SCB_VTOR_TBLOFF_Msk & 0x00000000);

    // Switch to Main Stack Pointer (in case it was using the Process Stack Pointer)
    __set_CONTROL(0);
    
    // Instruction synchronization barrier
    __ISB();

    // Set Main Stack Pointer to the Bootloader defined value.
    __set_MSP(BOOTLOADER_VECTOR_TABLE->stack_pointer);

    __DSB(); // Data synchronization barrier
    __ISB(); // Instruction synchronization barrier

    // Jump to Bootloader Reset Handler
    BOOTLOADER_VECTOR_TABLE->reset_handler();
    
    // The next instructions will not be reached
    while (1){}
}

[링크 : https://gist.github.com/gonzabrusco/fd47e89e4c6fb302fc54b83637a3a101

[링크 : https://blog.naver.com/alfee0/224043194861]

 

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 uart data bit  (0) 2026.03.17
stm32cubeide cpp 변환이후 generate code  (0) 2026.02.25
mbed + stm32cube hal...?  (0) 2026.02.23
Mbed studio on ubuntu 22.04  (0) 2026.02.23
stm32f103c8t6 cpp std::cout 실패  (0) 2026.02.18
Posted by 구차니
embeded/Cortex-M3 STM2026. 2. 25. 16:39

어.. 그냥 얘네는 먼가 하나씩 엇박인 느낌이냐..

CubeIDE 에서 해당 프로젝트를 cpp로 바꾸어도

CubeMX 로 생성되는 파일은 main.c로 나온다. -_-

그냥 알아서(?) 복사해서 넣던가, 아니면 cpp를 c로 바꾸고 generate code 해주던가

영 귀찮네..

 

[링크 : https://community.st.com/t5/stm32cubemx-mcus/generating-c-projects-with-stm32cubemx/td-p/53253]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

stm32 uart data bit  (0) 2026.03.17
stm32 다른 영역으로 점프(부트로더)  (0) 2026.03.06
mbed + stm32cube hal...?  (0) 2026.02.23
Mbed studio on ubuntu 22.04  (0) 2026.02.23
stm32f103c8t6 cpp std::cout 실패  (0) 2026.02.18
Posted by 구차니