Linux Debugging issues

Slides:



Advertisements
Similar presentations
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
Advertisements

J-Stream part1 (Software streaming service) ▪ 팀명 : Jukdori ▪ 팀원 : 16 th 윤병호 (PL) 15 th 송인규 16 th 김영진.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
Embedded S/W 기초이론 및 실습.
When Poll is Better than Interrupt
OS 소개 Introduction 설계목표 기본 용어 Resource Management History.
마이크로 컨트롤러 Microcontroller.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Open Platform을 기반으로 한 System SW 및 Application SW 전문가
EZ Board-M In-Ho, Roh Real Time System Lab.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
임베디드 시스템 개론 8. 임베디드 시스템 개발 환경 8주차 강의 자료 Embedded System Lab.
IT R&D Global Leader Finger Motion 인식 SoC ETRI Technology Marketing
Signal 자연계에 존재하는 모든 정보전달의 수단 신호의 공학적 표현 물소리, 바람소리, 새소리 짐승소리,불,연기,봉화…
Windows CE 시스템 개발 환경 구축.
제6장 FUSING.
Ⅵ. 메모리와 프로그램 가능한 논리소자 1. 메모리의 개요 2. ROM 3. RAM 4. 프로그램 가능한 논리소자
크로스 컴파일 환경 구축.
Operating Systems Overview
Kernel Porting Lecture #7.
임베디드 시스템.
System Call Linux Kernel 수업 3번째.
제4장 Cross Compiler 설치.
Toad for SQL Server 제품 소개서 – 프로넷소프트㈜.
7장 : 캐시와 메모리.
임베디드 하드웨어 Lecture #6.
Minicom,tftp,nfs설정,vnc설정
FUSING.
12. 데이터베이스 설계.
임베디드 운영체제 (리눅스 중심) Lecture #2.
Linux를 이용한 Embedded 장비 개발
리눅스 커널의 이해 중에서 1장. 소개 이원구 네트워크 실험실.
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
DSP와 TMS320F28X의 이해
DSP와 TMS320F28x의 이해.
Chapter 2 OSI 모델과 TCP/IP 프로토콜.
Development Environment of Embedded System : part 1
Visual ESTO 안정성,편리성,성능을 한단계 높였습니다! Visual ESTO IDE/Debugger/Monitor
컴퓨터 구조.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
가상플랫폼을 사용한 임베디드SW 개발 (CoWare CoWare Virtual Platform Designer 사용)
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
1. Embedded System의 이해.
Computer Architecture
임베디드 소프트웨어 동향. 임베디드 소프트웨어 동향 임베디드 S/W 시장분류 솔루션 측면 시스템 측면 운영체제 개발도구 설계도구 테스트도구 유선통신 무선통신 정보가전 자동차제어 산업자동화 사무자동화 군사/항공우주 의료장비 솔루션 공급 업체 임베디드 S/W시장 임베디드.
컴퓨터 시스템의 개요.
운영체제 (Operating Systems) (Multi-Thread Programming)
Geek-OS Project 정영진
Xen and the Art of Virtualization
제 1장 시스템 소프트웨어의 개요.
임베디드 소프트웨어 설계.
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
제5장 CPU스케줄링(CPU Scheduling)
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
운영체제 (Operating Systems) (Memory Management Strategies)
UNIT 21 Flash Memory Controller 로봇 SW 교육원 조용수.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
1. 데이터베이스 환경.
임베디드 하드웨어 Lecture #6.
임베디드 리눅스 설치 및 동작 Lecture #5.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

Linux Debugging issues MDS technology

Second Annual ESC Survey Results As promised on our last newsletter, Virtutech released the results of its second annual Embedded Systems Conference survey in May. Virtutech surveyed a cross-section of attendees to get feedback on the most time-consuming phase in the software development life cycle, with specific questions targeted at debugging for multi-core processors. Not surprisingly, 63 percent of respondents indicated that debugging continues to be the most time-consuming and costly phase of the software development life cycle, almost double any other single task. Furthermore, the survey highlighted the growth of multi-core processing and the need for innovative debugging technology to meet the consequent challenges. Respondents listed the most challenging aspects of debugging software on multiprocessor systems as thread locking (31 percent), lack of determinism/bug reproducibility (30 percent) and the fact that breakpoints do not freeze the system (29 percent). However, over one-half of respondents are using debuggers that do not support multiprocessor development

Linux Features 주소 공간 실행 주소 실행 방법 Kernel 물리적인 주소와 논리적인 주소가 동일 UNIX-like Linux는 ‘Open source를 이용해서 상용 RTOS에 비해 개발비용을 현저하게 줄여준다’ 고 한다.(이 말에는 함정이 있다. 상용 RTOS의 License 비용은 줄일 수 있지만 Linux 개발에는 그 어느 누구도 결과물에 대한 안정성을 보장해 주지 않고, 끊이지 않는 License 논란과 위협에 직면할 수 있다) Linux는 메모리 공간들을 보호하기 위하여 MMU를 사용하는데 아이러니컬하게 이 MMU는 디버깅을 아주 어렵게 만드는 원인이 된다. 때문에 Linux 커널, LKM (Loadable Kernel Module) 그리고 application에 따라서 서로 다른 디버깅 방법을 이용해야 한다. (LKM의 예로 device driver가 있다) 주소 공간 실행 주소 실행 방법 Kernel 물리적인 주소와 논리적인 주소가 동일 Linking에서 결정 ROM이나 ICE에 의한 특정 주소에서 LKM insmod 명령으로 Kernel의 File system에서 수행 Applications Virtual address

Linux Features (cont’) Kernel 실행 주소가 linking 에서 결정되고 실행되는 logical address는 physical address와 일치하기 때문에 디버깅이 쉽다. 하지만, kernel source code만 따라가는 기능 외에 TRACE32는 Kernel의 내부 정보를 읽을 수 있기 때문에 task나 memory 사용률 등의 핵심적인 정보를 이용할 수 있다. LKM 실행되는 logical address는 kernel과 같은 메모리 공간에서 수행되지만 insmod로 loading되는 주소는 실제 실행 시에 결정된다. Kernel로부터 실제 loading되는 주소를 찾지 못하면 엉뚱한 결과를 초래할 수 있다. TRACE32는 커널에서 정확한 주소 정보를 얻어올 수 있다. Applications 각 application들은 physical address와 다른 독립적인 virtual address를 가지고 수행되기 때문에 각 task의 정확한 주소 정보를 알아야 debugging이 가능하다.

Problems of GDB GDB는 Linux 개발자들이 최고의 디버거라고 오해하고 있는 software 방식의 debugger. (ptrace라는 내부 함수 이용) Ethernet 등을 이용한 high speed communication 지원한다? 하지만 Ethernet을 이용한다면 Ethernet interface와 덩치 큰 network stack을 항상 갖춰야 한다. Not-Unified debugging gdb는 target에 gdb server가 올라온 이후 통신이 가능 반드시 Linux kernel이 target에 먼저 porting이 끝난 이후에야 이용 가능. Boot loader와 Kernel, LKM은 debugging하지 않을 것인가 ? Difficulty in real-time debugging(not Real-time of PowerTrace) Kernel debugger와 PC가 통신을 할 때는 interrupt를 막기 때문에 실제 환경과 다를 수 있고, debug server가 break를 걸려 해도 kernel이나 LKM은 바로 멈추지 않을 수 있다. 디버깅 중인 현 task와 무관하게 CPU가 동작하기 때문에 CPU의 정확한 context를 볼 수 없다.

Problems of GDB (cont’) No high-level debugging features Hardware breakpoints and event trigger Fast program download Running 중인 application task 정보 외의 kernel resource나 다른 task의 정보를 얻기 힘들다. Target이 reset등의 exception이 발생했을 경우, GDB 자체를 이용할 수가 없다. GDB의 타겟을 멈추지 않고 내부 동작상태를 확인할 수 있는 run-mode debugging 기능은, TRACE32에서 지원 예정 (10월 초)

Powerful TRACE32 for Linux GDB/DDD agent/server를 올리는 overhead가 없다. TRACE32는 부트로더부터 multi-thread 환경까지 하나의 장비로 디버깅이 가능하다. Target의 CPU를 직접 control하여 task 간의 Real-time debugging이 가능하다. Multi-thread 뿐만 아니라 multi-process 환경까지 완벽하게 지원한다. High-speed image download Linux Kernel Awareness는 사용자가 kernel 내부를 잘 몰라도 디버깅에 필요한 많은 정보를 제시해 준다. 강력한 breakpoint, CTS, code coverage 기능과 Performance monitoring 기능으로 기본적인 source level debugging 이상의 환경을 제공

IMO Hardware Specifications CPU: S3C2410x (ARM920T) 64MB SDRAM (0x30000000++0x4FFFFFF) 4MB NOR Flash (0x0++0x3FFFFF) 32MB NAND Flash

Binary Format Binary Format? Binary Code EA000125 EA00005D B 0x49C Address, 심볼, Check sum 등의 정보를 포함하지 않고 순수하게 실행할 수 있는 코드만 포함 Disassembly Binary Code EA000125 EA00005D EA000062 EA00006D .. .. .. B 0x49C B 0x180 B 0x198 B 0x1C8 .. .. .. END

ELF Format Header Part Binary Part Symbol Part Executable and Linkable Format UNIX System Laboratory에서 Application Binary Interface (ABI)의 일부로서 개발되고 발표 Tool Interface Standards committee (TIS)에서 32 bit Intel Architecture 환경에서 동작하는 portable object 파일 포맷 표준으로 선택 Binary에 대한 Relocation 가능 Dynamic loading 가능 Symbol 정보를 이용해서 Debugging 가능 Header Part Binary Part Symbol Part ELF Format의 논리적 구조

TRACE32를 이용한 다운로드 2 ARM 7,9,10 CORE ICD FLASH RAM Phone.elf HOST PC B::Data.LOAD.ELF Phone.ELF ICD 1 Phone.elf 중 Binary part ARM 7,9,10 CORE FLASH FLASH 2 Phone.elf 중 Symbol Part ARM CORE Trace32 RAM Symbol Phone.elf Binary SRAM HOST PC TARGET PHONE