3차: How to Debug Linux Application
본 보도에 관하여
OpenAMP를 사용하여 ZYBO에서 Linux+캐리어 메탈(or FreeRTOS)의 다중 환경을 구현했습니다.
echo_test
을 처음으로 동작 확인용 Linux 애플리케이션으로 사용합니다.이번에는 Xilinx SDK로 Linux 애플리케이션(설치, 디버깅)을 개발합니다.컨디션
프로젝트 작성
Linux System Root 준비
이번 경우엔 이건 안 해도 돼.또 이 프로그램 자체가 OpenAmp에만 국한된 것이 아니라 통상적인 Linux 앱 개발도 마찬가지다.
PetaLinux에 원래 Linux 이미지가 만들어졌다고 가정하고 비표준 라이브러리를 설치합니다.XSDK(on Windows)에도 최소한의 를 설치했지만 없을 수 있습니다.이때 머리와 프로그램 라이브러리가 필요합니다.따라서 Peta Linux에서 System Root을 복제해야 합니다.
먼저 Linux 이미지를 만드는 PetaLinux 프로젝트 디렉토리에서 다음 명령을 사용하여 System Root을 아카이빙합니다.중심은 실체화 기호 링크다.심볼릭 링크를 계속 사용하면 Windows로 복사할 때 사용할 수 없습니다.
PetaLinux 프로젝트 디렉토리(Ubuntu)zip -r plnx_arm.zip build/tmp/sysroots/plnx_arm
이것을 윈도우의 적당한 위치로 해동하세요.(예: C:\asd\dev\zynq\vivado\project_openamp\project_openamp.sdk\sysroots\plnx_arm
XSDK 프로젝트 제작
XSDK를 시작하고 메뉴 표시줄 ->File->New->Application Project를 엽니다.
다음 설정에서 myecho_테스트라는 프로젝트를 만듭니다.Linux System Root의 설정이 중요합니다.
XSDK 프로젝트 설정
Project Explorer->제작된 프로젝트(my echo test)->오른쪽 키->Properties->C/C++ Build->Settings->ARM v7 Linux gcc linker->Miscellaneous를 선택합니다.
Linker Flags에서 다음 값을 설정합니다.경로를 적절하게 교체하십시오.--sysroot=C:\asd\dev\zynq\vivado\project_openamp\project_openamp.sdk\sysroots\plnx_arm
상황에 따라 프로그램 라이브러리가 필요할 수도 있습니다.(이번엔 필요 없어.)
Project Expler->제작된 프로젝트(my echo test)->오른쪽 키->Properties->C/C++ Build->Settings->ARM v7 Linuxgcc linker->Libraries를 선택합니다.리브레이스에서 추가metal
.
소스 코드 쓰기
귀찮아서 echo테스트와 같은 코드를 가지고 올게요.다음 소스 코드를 복사합니다.
https://github.com/Xilinx/meta-openamp/blob/rel-v2017.4/recipes-openamp/rpmsg-examples/rpmsg-echo-test/echo_test.c
구축 성공 후 myecho_test.엘프를 만들었을 거예요.
디버깅
OpenAMP 환경 준비
my_echo_test는 메아리의 캐리어 금속(BM) 펌웨어와 동작을 조화시킨다.따라서 처음과 마찬가지로 BM 측 펌웨어를 로드하고 OpenAMP를 시작해야 합니다.
다음 명령은 펌웨어를 메아리로 보여 줍니다.
OpenAMP 시작 명령modprobe rpmsg_user_dev_driver
echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
디버깅
디버깅 방법은 일반적인 리눅스 응용 프로그램의 디버깅과 같습니다.( https://qiita.com/take-iwiw/items/8134ca7098622219b177 )
먼저 ZYBO의 UART 터미널에서 ifconfig
등을 통해 IP 주소를 확인하십시오.(192.168.1.87 기준)
zip -r plnx_arm.zip build/tmp/sysroots/plnx_arm
귀찮아서 echo테스트와 같은 코드를 가지고 올게요.다음 소스 코드를 복사합니다.
https://github.com/Xilinx/meta-openamp/blob/rel-v2017.4/recipes-openamp/rpmsg-examples/rpmsg-echo-test/echo_test.c
구축 성공 후 myecho_test.엘프를 만들었을 거예요.
디버깅
OpenAMP 환경 준비
my_echo_test는 메아리의 캐리어 금속(BM) 펌웨어와 동작을 조화시킨다.따라서 처음과 마찬가지로 BM 측 펌웨어를 로드하고 OpenAMP를 시작해야 합니다.
다음 명령은 펌웨어를 메아리로 보여 줍니다.
OpenAMP 시작 명령modprobe rpmsg_user_dev_driver
echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
디버깅
디버깅 방법은 일반적인 리눅스 응용 프로그램의 디버깅과 같습니다.( https://qiita.com/take-iwiw/items/8134ca7098622219b177 )
먼저 ZYBO의 UART 터미널에서 ifconfig
등을 통해 IP 주소를 확인하십시오.(192.168.1.87 기준)
modprobe rpmsg_user_dev_driver
echo image_echo_test > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state
Xilinx C/C++ applications (system Debugger)
아래에 아무것도 없으면 더블 클릭그런 다음 Resume이 시작되면 프로그램이 시작됩니다.
좋아하는 곳에서 멈추고 변수를 확인할 수 있을 거예요.
다시 실행할 때
마지막으로 기록한 바와 같이 다시 실행할 때 OPEN AMP를 한 번 종료해야 합니다.
ZYBO 단말기
echo stop > /sys/class/remoteproc/remoteproc0/state
echo start > /sys/class/remoteproc/remoteproc0/state
(할인) 파이썬의 경우
파이톤에서 다음 코드를 통해 통신할 수 있습니다.
주의점open("/dev/rpmsg0", "r+")
이 열렸을 때 통신이 원활하지 않습니다.os.open("/dev/rpmsg0", os.O_RDWR)
.def main():
while(not (os.path.exists("/dev/rpmsg0"))):
sleep(1)
rpmsg = os.open("/dev/rpmsg0", os.O_RDWR)
os.write(rpmsg, "ABC")
readValue = os.read(rpmsg, 20)
print("readValue = " + readValue)
os.close(rpmsg)
if __name__ == '__main__':
main()
Reference
이 문제에 관하여(3차: How to Debug Linux Application), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/iwatake2222/items/8b589650c15a6f705f35
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def main():
while(not (os.path.exists("/dev/rpmsg0"))):
sleep(1)
rpmsg = os.open("/dev/rpmsg0", os.O_RDWR)
os.write(rpmsg, "ABC")
readValue = os.read(rpmsg, 20)
print("readValue = " + readValue)
os.close(rpmsg)
if __name__ == '__main__':
main()
Reference
이 문제에 관하여(3차: How to Debug Linux Application), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iwatake2222/items/8b589650c15a6f705f35텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)