블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

ARM cortex cpu 제조 업체별로 코드호환성 조사

제조사별로 주변장치(peripheral,module,interface)들이 달라서,
ARM 코어(core)는 거의 동일하나, 주변장치코드는 거의 다르다.
예) 업체1의 CPU는 USART가 있지만 업체2는 UART만 있다.
     (드라이버에 사용가능한 기능을 표시하는것이 있다)

마이컴용 간단한 cmsis UART드라이버는 없는듯.
리눅스타입의 드라이버는 존재.
예) Driver_USART.h (소스코드는 작성해야한다)
fsl_uart_cmsis.h
fsl_uart_cmsis.c <<-- 이 코드는 제조업체에서 작성
사용자는 ARM_DRIVER_USART를 사용하여 프로그램.(UART0_InitPins()등을 직접 호출하여 사용할 수 도 있다)
ARM_DRIVER_USART는 UART0_InitPins()등의 함수를 호출
void UART0_InitPins(void)함수는 RTE\Board_Support\MKV31F512VLL12\pin_mux.c 등에 있다.

typedef struct _ARM_DRIVER_USART {
  ARM_DRIVER_VERSION     (*GetVersion)      (void);                              ///< Pointer to \ref ARM_USART_GetVersion : Get driver version.
  ARM_USART_CAPABILITIES (*GetCapabilities) (void);                              ///< Pointer to \ref ARM_USART_GetCapabilities : Get driver capabilities.
  int32_t                (*Initialize)      (ARM_USART_SignalEvent_t cb_event);  ///< Pointer to \ref ARM_USART_Initialize : Initialize USART Interface.
  int32_t                (*Uninitialize)    (void);                              ///< Pointer to \ref ARM_USART_Uninitialize : De-initialize USART Interface.
  int32_t                (*PowerControl)    (ARM_POWER_STATE state);             ///< Pointer to \ref ARM_USART_PowerControl : Control USART Interface Power.
  int32_t                (*Send)            (const void *data, uint32_t num);    ///< Pointer to \ref ARM_USART_Send : Start sending data to USART transmitter.
  int32_t                (*Receive)         (      void *data, uint32_t num);    ///< Pointer to \ref ARM_USART_Receive : Start receiving data from USART receiver.
  int32_t                (*Transfer)        (const void *data_out,
                                                   void *data_in,
                                             uint32_t    num);                   ///< Pointer to \ref ARM_USART_Transfer : Start sending/receiving data to/from USART.
  uint32_t               (*GetTxCount)      (void);                              ///< Pointer to \ref ARM_USART_GetTxCount : Get transmitted data count.
  uint32_t               (*GetRxCount)      (void);                              ///< Pointer to \ref ARM_USART_GetRxCount : Get received data count.
  int32_t                (*Control)         (uint32_t control, uint32_t arg);    ///< Pointer to \ref ARM_USART_Control : Control USART Interface.
  ARM_USART_STATUS       (*GetStatus)       (void);                              ///< Pointer to \ref ARM_USART_GetStatus : Get USART status.
  int32_t                (*SetModemControl) (ARM_USART_MODEM_CONTROL control);   ///< Pointer to \ref ARM_USART_SetModemControl : Set USART Modem Control line state.
  ARM_USART_MODEM_STATUS (*GetModemStatus)  (void);                              ///< Pointer to \ref ARM_USART_GetModemStatus : Get USART Modem Status lines state.
} const ARM_DRIVER_USART;

 

cmsis 드라이버코드를 잘 사용하면, 쉽게 프로그램 작성이 가능하나,
코드 효율성은 매우 나빠보인다.
덩치가 크고, 메모리도 사용할것 처럼 보인다.

'C언어,ARM' 카테고리의 다른 글

J2Cal 계산기, RS232TestProgram3, ScreenBMPcopy  (0) 2020.05.25
남에 소스코드 분석하기  (0) 2020.05.22
STM32 - ST-LINK download  (0) 2020.05.09
SMT32 - UART1 설정  (0) 2020.05.09
error C2733: wmemchr  (0) 2020.05.01
Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함