embeded/ARM2023. 7. 21. 19:04

PTM은 Program Trace Macrocell의 약자로 말그대로 프로그램을 추적하는 녀석이라

데이터만을 추적하는 기능은 제공하지 않는 듯.

 

CortexA9의 PTM과 같이 데이터 트레이스를 지원하지 않는 환경에서 ITM은 제한적으로나마 데이터 트레이스를 해볼 수 있는 방안을 제공한다

[링크 : https://www.epnc.co.kr/news/articleView.html?idxno=45715]

 

PTM interface
The Cortex-A9 processor optionally implements a Program Trace Macrocell (PTM) interface, that is compliant with the Program Flow Trace (PFT) instruction-only architecture protocol. Waypoints, changes in the program flow or events such as changes in context ID, are output to enable the trace to be correlated with the code image.

[링크 : https://developer.arm.com/documentation/100511/0401/functional-description/about-the-functions/ptm-interface]

 

 

'embeded > ARM' 카테고리의 다른 글

arm vsub operator  (0) 2023.08.09
ARM NEON SLP  (0) 2023.08.07
openOCD와 jtag  (0) 2023.07.06
cmsis (Common Microcontroller Software Interface Standard)  (0) 2023.02.27
i.mx8m plus arm trust zone  (0) 2023.02.24
Posted by 구차니
embeded/ARM2023. 7. 6. 23:50

문득.. JTAG은 표준인데 왜 업체별로 다르지? 라는 생각에 검색하다 보니

공용으로 쓸 수 있는진 모르겠지만

openOCD를 이용하면 viviado 등이 없어도 FPGA에 쓸 수 있다고 하는걸 봐서는

openOCD가 각종 jtag를 지원한다고 보는게 맞을 듯.

 

We decided to support both urJTAG and the well known OpenOCD out of the box.

Supported devices
The list of supported devices is constantly being expanded and here is a small selection of the supported devices.

ARM7TDMI » fx LPC2148, AT91SAM7
ARM720T » fx LH79520, EP7312
ARM9TDMI
ARM920T » fx S3C2410, S3C2440
ARM922T
ARM926EJS » fx S3C2412, STN8811, STN8815
ARM966E » fx STR91XF
ARM11 » fx S3C6400, OMAP2420, MSM7200
ARM1136
ARM1156
ARM1176
CORTEX-M1 » fx LPC11 series
CORTEX-M3 » fx LM3S series, STM32F1/F2/F3 series, LPC17 series
CORTEX-M4 » fx STM32F4
CORTEX-A8 » fx OMAP3530 BeagleBoard
CORTEX-A8 » fx DM3730 BeagleBoard-xM
CORTEX-A9 » fx OMAP4430 PandaBoard
XSCALE » fx PXA255, PXA270, IXP42X
MARVEL » fx FEROCEON CPU CORE
FPGA » fx Xilinx Spartan, Virtex or Altera Cyclone, Stratix
CPLD » fx Xilinx CoolRunner or Altera MAX

Technical details
The board itself is 5 by 5 cm with a USB B connector at one side and JTAG and IO headers at another.

The JTAG port supports a wide range of voltages, as it is connected to a couple of voltage translators (74LVC2T45). This makes the uniJTAG even more universal, as you can use it together with any JTAG�able device, running at 1.2V to 5.5V.

The IO header can be used as 8 single controllable IO�s, or it can be used as a full standard UART port. With a jumper you can chose whether the IO�s should be at a 5V level, or a 3.3V level.

The board has also an onboard EEProm for storing the FT2232 configurations, so the uniJTAG is a plug and play solution, and it automatically enumerates as a JTAG and a Serial device.

[링크 : http://www.tkjelectronics.dk/?p=products&product=unijtag]

 

다른 JTAG을 사용..

 

$ lsusb
Bus 001 Device 006: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC
Bus 001 Device 028: ID 09fb:6001 Altera Blaster

$ sudo /opt/openocd/bin/openocd -d \
             -f /opt/openocd/share/openocd/scripts/interface/ftdi/digilent_jtag_smt2.cfg \
             -f /opt/openocd/share/openocd/scripts/cpld/xilinx-xc6s.cfg \
             -c "adapter_khz 1000"

$ sudo /opt/openocd/bin/openocd \ 
             -f /opt/openocd/share/openocd/scripts/interface/altera-usb-blaster.cfg \
             -f /opt/openocd/share/openocd/scripts/cpld/xilinx-xc6s.cfg \
             -c "adapter_khz 1000; init; xc6s_program xc6s.tap; pld load 0 ./ise/top.bit ; exit"

[링크 : https://tomverbeure.github.io/2019/09/15/Loading-a-Spartan-6-bitstream-with-openocd.html]

'embeded > ARM' 카테고리의 다른 글

ARM NEON SLP  (0) 2023.08.07
cortex a9 ptm  (0) 2023.07.21
cmsis (Common Microcontroller Software Interface Standard)  (0) 2023.02.27
i.mx8m plus arm trust zone  (0) 2023.02.24
ampere altra / 기가바이트 R272-P30 / 우분투  (0) 2023.02.03
Posted by 구차니
embeded/ARM2023. 2. 27. 23:10

이름대로 MCU를 위한 공통 API 라고 보면 될 듯.

칩 제조사 마다 독자적인 C API를 제공하지만, 칩이 달라지면 그대로 쓸 수 없는데 CMSIS를 쓰면 다른 벤더에서도

소스 레벨에서는 문제없이 쓸 수 있을 것 같긴하다.

[링크 : https://developer.arm.com/tools-and-software/embedded/cmsis]

 

+

cordic 찾다 cmsis sw divider 라는게 보이네.

[링크 : https://arm-software.github.io/CMSIS_5/DSP/html/group__divide.html]

[링크 : https://www.iar.com/kr/knowledge/learn/programming/using-iar-embedded-workbench-for-arm-and-the-cmsis-dsp-library/]

'embeded > ARM' 카테고리의 다른 글

cortex a9 ptm  (0) 2023.07.21
openOCD와 jtag  (0) 2023.07.06
i.mx8m plus arm trust zone  (0) 2023.02.24
ampere altra / 기가바이트 R272-P30 / 우분투  (0) 2023.02.03
arm asm rbit(비트 뒤집기)  (0) 2022.08.26
Posted by 구차니
embeded/ARM2023. 2. 24. 10:31

 

For i.MX 8M EVK, to build imx-boot image by using imx-mkimage, perform the following steps:
1. Copy and rename mkimage from u-boot/tools/mkimage to imx-mkimage/iMX8M/mkimage_uboot.
2. Copy u-boot-spl.bin from u-boot/spl/u-boot-spl.bin to imx-mkimage/iMX8M/.
3. Copy u-boot-nodtb.bin from u-boot/u-boot-nodtb.bin to imx-mkimage/iMX8M/.
4. Copy imx8mq-evk.dtb (for i.MX 8M Quad EVK), imx8mm-evk.dtb (for i.MX 8M Mini LPDDR4 EVK),
     imx8mm-ddr4-evk.dtb (for i.MX 8M Mini DDR4 EVK), or
     imx8mp-evk.dtb (for i.MX 8M Plus LPDDR4 EVK) from u-boot/arch/arm/dts/ to imx-mkimage/iMX8M/.
5. Copy bl31.bin from Arm Trusted Firmware (imx-atf) to imx-mkimage/iMX8M/.
6. Copy firmware/hdmi/cadence/signed_hdmi_imx8m.bin from the firmware-imx package to imx-mkimage/iMX8M/.
7. For i.MX 8M Quad and i.MX 8M Mini LPDDR4 EVK, copy lpddr4_pmu_train_1d_dmem.bin, 
    lpddr4_pmu_train_1d_imem.bin,
    lpddr4_pmu_train_2d_dmem.bin, and
    lpddr4_pmu_train_2d_imem.bin from firmware/ddr/synopsys of the firmware-imx package to imx-mkimage/ iMX8M/.
For i.MX 8M Mini DDR4 EVK, copy
    ddr4_imem_1d.bin,
    ddr4_dmem_1d.bin,
    ddr4_imem_2d.bin, and
    ddr4_dmem_2d.bin from firmware/ddr/synopsys of the firmware-imx package to imx-mkimage/iMX8M.
For i.MX 8M Plus LPDDR4 EVK, copy
    lpddr4_pmu_train_1d_dmem_201904.bin,
    lpddr4_pmu_train_1d_imem_201904.bin,
    lpddr4_pmu_train_2d_dmem_201904.bin, and
    lpddr4_pmu_train_2d_imem_201904.bin from firmware/ddr/synopsys of the firmware-imx package to imx-mkimage/iMX8M/.
8. For i.MX 8M Quad EVK, run make SOC=iMX8M flash_evk to generate flash.bin (imx-boot image) with HDMI FW included.
For i.MX 8M Mini LPDDR4 EVK, run make SOC=iMX8MM flash_evk to generate flash.bin (imx-boot image).
For i.MX 8M Mini DDR4 EVK, run make SOC=iMX8MM flash_ddr4_evk to generate flash.bin (imx-boot image).
For i.MX 8M Plus LPDDR4 EVK, run make SOC=iMX8MP flash_evk to generate flash.bin (imx-boot-image).
To boot with eMMC fasboot on i.MX 8M Quad EVK and i.MX 8M Mini LPDDR4 EVK,
use flash_evk_emmc_fastboot target.

 

아래 파일은 어디서 봐야하냐..

i.MX 8M Plus:
    setenv fdtfile imx8mp-evk-rpmsg-lpv.dtb
/run/media/mmcblk1p1# ls -al *rp*
-rwxrwx--- 1 root disk 64363 Apr  5  2011 imx8mp-evk-rpmsg.dtb
-rwxrwx--- 1 root disk 19064 Apr  5  2011 imx8mp_m7_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin
-rwxrwx--- 1 root disk 18544 Apr  5  2011 imx8mp_m7_TCM_rpmsg_lite_str_echo_rtos.bin

[링크 : https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf]

'embeded > ARM' 카테고리의 다른 글

openOCD와 jtag  (0) 2023.07.06
cmsis (Common Microcontroller Software Interface Standard)  (0) 2023.02.27
ampere altra / 기가바이트 R272-P30 / 우분투  (0) 2023.02.03
arm asm rbit(비트 뒤집기)  (0) 2022.08.26
vfp, neon cycle  (0) 2022.01.23
Posted by 구차니
embeded/ARM2023. 2. 3. 17:58

결론 : 실패

 

회사에 있는 녀석으로 Ampere 사의 Altra Q80-30을 탑재한 녀석이다.

80코어 에 64(16*4)GB 에 스토리지가 U.2인 사악한(!) 2U 서버이다.

[링크 : https://www.gigabyte.com/kr/Enterprise/Rack-Server/R272-P30-rev-100]

 

MT.Snow 제품으로 1socket 서버

[링크 : https://www.servethehome.com/ampere-altra-q80-30-in-action-at-ampere-hq/]

 

Q80-30은 80코어 @ 3.0Ghz 인듯

그리고 코어빨로 벤치상으로는 쓰레드리퍼 3990X와 i9-12900K를 발라버린다.

다만 단일 코어 성능으로는 쓰레드리퍼의 66% i9의 44% 수준이다.

 

[링크 : https://www.tomshardware.com/news/ampere-altra-max-80-ccore-arm-delidded]

 

ARM cpu 주제(?)에 BIOS도 있고(!)

 

우분투 설치해보려니 멈춰있어서 검색해보니 (+ 미리해본 직원 도움)

grub 에서 아래 내용을 kernel argument로 넣어주어야 한다. 안그러면 커서만 깜박이는걸 볼 수 있다.

console=tty0

[링크 : https://github.com/coreos/fedora-coreos-tracker/issues/920]

 

설치는 의외로 빨리 끝나는데

문제는.. 원인불명의 부트로더 설치실패 -_-

nvme가 발열이 안되서 그런지 아니면 다른 원인인지 모르겠으니

다음 기회에 창고에 쳐박고 원격으로 시도를...

'embeded > ARM' 카테고리의 다른 글

cmsis (Common Microcontroller Software Interface Standard)  (0) 2023.02.27
i.mx8m plus arm trust zone  (0) 2023.02.24
arm asm rbit(비트 뒤집기)  (0) 2022.08.26
vfp, neon cycle  (0) 2022.01.23
cortex-a9 neon  (0) 2021.06.21
Posted by 구차니
embeded/ARM2022. 8. 26. 18:25

왜 찾게 되었냐면.. 알고 싶지 않았습니다.. -_-

[링크 : https://stackoverflow.com/questions/20436466/lsb-to-msb-bit-reversal-on-arm]

 

RBIT
Reverse the bit order in a 32-bit word.

Syntax
RBIT{cond} Rd, Rn

[링크 : https://developer.arm.com/documentation/dui0473/m/arm-and-thumb-instructions/rbit]

 

REV
Reverse the byte order in a word.

Syntax
REV{cond} Rd, Rnn

[링크 : https://developer.arm.com/documentation/dui0473/m/arm-and-thumb-instructions/rev]

'embeded > ARM' 카테고리의 다른 글

i.mx8m plus arm trust zone  (0) 2023.02.24
ampere altra / 기가바이트 R272-P30 / 우분투  (0) 2023.02.03
vfp, neon cycle  (0) 2022.01.23
cortex-a9 neon  (0) 2021.06.21
EIM (external interface module)  (0) 2021.06.21
Posted by 구차니
embeded/ARM2022. 1. 23. 18:08

부동 소수점 +,-,*는 그래도 1사이클에 끝나지만 /는 10사이클 소요됨.

[링크 : https://developer.arm.com/documentation/ddi0409/f/instruction-timing/instruction-specific-scheduling/vfp-instruction-timing]

[링크 : https://developer.arm.com/documentation/ddi0409/g/Instruction-Timing/Instruction-specific-scheduling/Instruction-timing-tables]

 

VFP에 vector가 들어간다고 해도 NEON 수준의 병렬성은 제공하지 않음

The VFP architecture was intended to support execution of short "vector mode" instructions but these operated on each vector element sequentially and thus did not offer the performance of true single instruction, multiple data (SIMD) vector parallelism.

[링크 : https://en.wikipedia.org/wiki/ARM_architecture#VFP]

'embeded > ARM' 카테고리의 다른 글

ampere altra / 기가바이트 R272-P30 / 우분투  (0) 2023.02.03
arm asm rbit(비트 뒤집기)  (0) 2022.08.26
cortex-a9 neon  (0) 2021.06.21
EIM (external interface module)  (0) 2021.06.21
ARMv9 SVE2  (0) 2021.05.15
Posted by 구차니
embeded/ARM2021. 6. 21. 18:55

NEON은 다 동일하다는데

Cortex-A9만 2개씩 밖에 못해서 느리다고 하는데 어느말이 맞는걸까?

 

[링크 : https://stackoverflow.com/questions/12420050/neon-float-multiplication-is-slower-than-expected]

'embeded > ARM' 카테고리의 다른 글

arm asm rbit(비트 뒤집기)  (0) 2022.08.26
vfp, neon cycle  (0) 2022.01.23
EIM (external interface module)  (0) 2021.06.21
ARMv9 SVE2  (0) 2021.05.15
cortex-a9 하드웨어 Divider가 없어?!  (0) 2021.03.18
Posted by 구차니
embeded/ARM2021. 6. 21. 13:54

NXP/freescale i.mx6 전용인진 모르겠지만 SRAM이나 FLASH 그리고 기타 외부장치와 인터페이싱을 제공하는 모듈

(ISA 와 호환성을 가진다고도 하시는데 공식적인 내용은 좀 더 찾아봐야 할 듯)

 

[링크 : https://www.nxp.com/docs/en/application-note/AN2934.pdf]

[링크 : https://www.nxp.com/docs/en/application-note/AN2680.pdf]

 

+

위의 문서에서 MAC7100이 언급되서 찾아보는중.

ARM7TDMI-S 계열의 32bit MCU 이니 ARMv5 계열이려나?

[링크 : https://www.nxp.com/docs/en/data-sheet/MAC7100EC.pdf]

'embeded > ARM' 카테고리의 다른 글

vfp, neon cycle  (0) 2022.01.23
cortex-a9 neon  (0) 2021.06.21
ARMv9 SVE2  (0) 2021.05.15
cortex-a9 하드웨어 Divider가 없어?!  (0) 2021.03.18
gcc 버전 차이?  (0) 2021.01.13
Posted by 구차니
embeded/ARM2021. 5. 15. 09:56

ARMv9이 이번에 발표했는데 관심이 없다가 다시 관심이 가서 검색해보는데

가장 큰 포인트는 요즘 추세에 맞게(?) 인공지능 관련 가속인듯

 

Armv9은 지난 2011년 출시한 ARM 최초의 64비트 지원 아키텍처 'Armv8'의 뒤를 잇는 차세대 반도체 IP다. 이는 슈퍼컴퓨터용 명령어 세트인 '스케일러블 벡터 익스텐션2(SVE2)'을 지원해 Armv8 아키텍처 보다 빠른 머신러닝(ML)과 DSP 성능을 구현한다.

[링크 : https://zdnet.co.kr/view/?no=20210331194029#_enliple ]

 

SVE는 다음의 약자고 v2 이듯 SVE도 존재하는데

Scalable Vector Extension version two

[링크 : https://developer.arm.com/.../sve/sve-vs-sve2/introduction-to-sve2]

 

 

SVE는 neon의 확장이 아는 별개의 instructino 이라고.

Scalable Vector Extension (SVE) is the next-generation SIMD extension of the Arm v8-A AArch64 instruction set. SVE is not an extension of Neon, but a new set of vector instructions that are developed to target HPC workloads. SVE enables vectorization of loops which would either be impossible or not beneficial to vectorize with Neon .

Unlike other SIMD architectures, SVE can be Vector Length Agnostic (VLA). SVE does not fix the size of the vector registers which allows hardware implementors to choose the size that is best for their workloads.

[링크 : https://developer.arm.com/documentation/101726/.../What-is-the-Scalable-Vector-Extension-]

 

갑자기 vfp와 neon과 sve의 연관이 궁금해지네

 

+

2021.05.16

ARMv8.2-A의 선택사양? 아무튼 SVE2가 중요한게 아니라 SVE가 머냐가 문제인가..

The Scalable Vector Extension (SVE) is "an optional extension to the ARMv8.2-A architecture and newer" developed specifically for vectorization of high-performance computing scientific workloads.

[링크 : https://en.wikipedia.org/wiki/AArch64#Scalable_Vector_Extension_(SVE)]

'embeded > ARM' 카테고리의 다른 글

cortex-a9 neon  (0) 2021.06.21
EIM (external interface module)  (0) 2021.06.21
cortex-a9 하드웨어 Divider가 없어?!  (0) 2021.03.18
gcc 버전 차이?  (0) 2021.01.13
vfp  (0) 2021.01.13
Posted by 구차니