W7500 mbed porting Guide
현재 회사에서 W7500 Peripheral Library Firmware 구현과 mbed에 등록하기 위한 Porting 작없을 진행하고 있다.
본 포스팅에서는 W7500을 mbed에 등록하기 위한 Porting 작업을 진행하는 방법과 기술적인 이슈들을 정리 한다.
mbed SDK Porting 개요
mbed Porting의 궁극적인 목적은 mbed에서 제공하는 아래와 같은 코드를 W7500에서 동작 할 수 있도록 Interface Code를 구현하는 것이다.
#include "mbed.h"
int main()
{
Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);
pc.baud(115200);
pc.printf("TEST Start\r\n");
myled = 0;
while(1){
pc.printf("LED ON\r\n");
myled = 1;
wait(1);
pc.printf("LED OFF\r\n");
myled = 0;
wait(1);
}
}
mbed SDK Porting을 위한 코드 및 자세한 정보는 아래 주소에서 얻을 수 있다.
http://developer.mbed.org/handbook/mbed-SDK-porting
mbed SDK 폴더 구조
mbed SDK의 폴더 구조는 크게 api, common, hal, targets 으로 구분 된다. 각 폴더에 대한 간략한 설명은 아래와 같다.
api
api 폴더에는 아래 그림과 같은 파일들이 존재 하며, 각 파일들은 User가 Application을 구현 할 때 필요한 API 들의 프로토타입들이 존재 한다.
![선택 영역_017.png](E:\Dropbox\Blog\201504~3/./mbed porting Guide W7500_1/선택 영역_017.png)
common
api 폴더에서 선언한 프로토타입들을 구현한 파일들이 존재 한다.
common 폴더의 구현부에서 Chip에 종속적인 함수들을 호출 할 때는 Hal 폴더에 정의된 함수들을 이용한다.
![선택 영역_018.png](E:\Dropbox\Blog\201504~3/./mbed porting Guide W7500_1/선택 영역_018.png)
hal
Chip에 종속적인 기능을 사용 하기 위한 Interface API들의 프로토타입들이 존재 하며, common 폴더의 함수들은 hal에 정의되어 있는 함수들을 이용하여 Chip에 종속적인 기능을 이용한다.
![선택 영역_019.png](E:\Dropbox\Blog\201504~3/./mbed porting Guide W7500_1/선택 영역_019.png)
targets
targets 폴더는 cmsis와 hal로 나뉜다.
targets/cmsis
targets/cmsis는 chip을 구동하기 위해 필요한 startup code와 linker script 들이 존재 하며, verdor에 따라서는 Chip을 제어하기 위한 Library Code 들을 보관 한다.
![선택 영역_024.png](E:\Dropbox\Blog\201504~3/./mbed porting Guide W7500_1/선택 영역_024.png)
targets/hal
hal 폴더에서 정의한 프로토타입들의 실제 구현 코드들을 보관하며, common 폴더의 함수들이 Chip에 종속적인 기능을 사용하기 위해서는 targets/hal 폴더에 정의된 함수들을 호출한다.
![선택 영역_026.png](E:\Dropbox\Blog\201504~3/./mbed porting Guide W7500_1/선택 영역_026.png)