MCB1700 평가 보드 용 프로그램을 개발하고 싶습니다. PC의 클라이언트 소프트웨어가 HDD에서 사진을 읽습니다. 그런 다음 소켓 (이더넷)을 통해 MCB1700 평가 보드로 사진을 전송합니다. MCB1700의 서버는 소켓 연결을 통해 PC에서 사진을 수신하고 LCD에 표시합니다.Keil MCB1700 평가 보드를위한 내 프로그램을 구현하는 가장 좋은 방법은 무엇입니까?
또한 서버가 이러한 작업을 수행해야합니다
- 는 USB 스틱에 사진을 저장하려면를;
- USB 스틱에서 그림을 읽고 소켓을 통해 클라이언트에게 보내려면 다음을 수행하십시오.
- CAN을 통해 정보를 보내고 받으려면
- COM 로깅.
- 등
소켓 연결이 CMSIS 및 RL-ARM 라이브러리의 도움으로 구현 될 수있다.
그러나 이해할 수 있듯이, 두 가지 경우 모두에서 sofrware는 들어오는 TCP 연결을 수신하고 네트워크의 이벤트를 무한 루프로 처리해야합니다. Keil의 모든 사례는 이러한 원칙을 기반으로합니다.
저는 항상 임베디드 프로그래밍이 무한 루프를 사용하는 것은 좋지 않다고 생각했습니다. 은 또한, 나는
"(루프에서 하나 이상의 작업을 실행하여) RTOS 없이 실시간으로 프로그램을 만들 확실히 가능하다"
는 흥미로운 말씀을 읽게 http://www.keil.com/support/man/docs/rlarm/rlarm_ar_artxarm.htm 내가 이해 한대로 루프에서 많은 작업을 실행하는 것은 일반적인 습관입니까?
while (1) { task1(); task2(); ... taskN(); }
모든 이벤트를 인터럽트로 처리하는 것이 더 좋습니다.
CMSIS 및 RL-ARM 라이브러리의 소켓 연결을 사용하고 인터럽트를 처리하여 모든 소프트웨어를 구성 할 수 있습니까? 내 서버 (MCB1700)는 많은 작업을 수행해야합니다. 내 소프트웨어에서 RTOS RTX를 사용해야합니다. 그렇지 않니? RTX없이 소프트웨어를 구현하는 것이 더 좋습니까?
내 작업은 다음과 같습니다. 1) 서버 (MCB1700에서)가 데이터 패키지를 읽습니다. 2) 서버가 명령을 수행하지 않으면 특수 기능이이 패키지를 구문 분석하고 (char 기호 배열과 같이) 어떤 명령을 수행해야하는지 정의합니다. 다른 경우 프로그램은 특정 명령 내에서 패키지를 읽고 그 명령으로 수행 할 작업을 정의합니다. 3) 명령이 완료됩니다. (1)로 돌아 가기. 다른 작업 : CAN의 이벤트, ADC가 인터럽트로 처리 될 수 있습니다 (처리기에 코드 줄이 거의 없음). 그림을 USB 스틱에 저장하고 LCD에 표시하면 패키지를 읽은 직후에 수행됩니다. 태스크). –
두 작업을 동시에 수행하는 것은 배제됩니다. "큰 루프"아키텍처가 내 경우에는 받아 들여질 수 있다는 것을 알았습니까? 다른 유형의 임베디드 소프트웨어 아키텍처가 있습니까? "큰 루프"아키텍처가 제 경우에 가장 적합합니까? –
@Lucky Man : 아니오, RTOS가 가장 적합한 아키텍처 IMO입니다. 당신은 RL-ARM 라이브러리를 사용할 수 있다고 했지요. 왜 당신은 지금 그것을 배제하고 있습니까? 목표 지점을 다소 옮겼습니다! 요구 사항을 살펴보면 최소한 4 ~ 5 가지 작업이 있음을 제안합니다. CAN 및 USB 스택에도 정기적 인 서비스가 필요합니다. 어떤 종류의 멀티 태스킹 커널이 없다면, main()이 종료되면 시스템이 멈출 것이므로 어떤 종류의 루프가 끝나지 않아야합니다. RTOS 작업은 일반적으로 경영진이 운영하도록 예정된 개별적인 무한 루프입니다. – Clifford