임베디드 리눅스 기반 동적 소프트웨어 업그레이드 기술 Dynamic SW upgrade for embedded systems 이 민석 한성대학교 컴퓨터공학과 SevenCore Co. Ltd.
임베디드 시스템에서의 SW 업그레이드 장비를 처음 켜면 : 업그레이드 체크, “ 업그레이드 수행할까요 ?” : 신규 SW 다운받아 설치 한 후 재부팅, 재시작 영화 감상 도중에 : 자동으로 신규 SW 다운로드, 설치 : 수정내용 즉각 반영 불가, “ 지금 재부팅 할까요 ?” 서비스 지연 서비스 중단 시스템 재부팅 Flash 메모리 : 비휘발성 메모리로 코드가 저장되는 곳 RAM 메모리 : 휘발성 메모리로 코드가 실제 실행되는 곳 임베디드 시스템의 메모리 구조 IPTV STB 2
SevenCore Co. Ltd. [SW 업그레이드 ] 기존방식 vs. 신규방식 Flash 메모리 SDRA M 메모 리 서비스 단절 피해 100% 가용성 훼손 실생활 위험 초래 통신장비 의료장비 발전소 군사 무기체계 Flash 메모리 업그레이드 : 비휘발성 메모리로 코드가 저장되는 곳 RAM 메모리 업그레이드 : 휘발성 메모리로 코드가 실제 실행되는 곳 동적 업그레이드 방식 다운받은 패치파일로 RAM 메모리의 수행 코드 수정 (Flash 메모리의 기존 코드수정 ) Flash 메모리 SDRA M 메모 리 Flash 메모리 업그레이드 : 비휘발성 메모리로 코드가 저장되는 곳 정적 업그레이드 방식 다운받은 패치파일로 Flash 메모리의 기존 코드수정 서비스 중단 시스템 재부팅 재부팅 없음 서비스 지속 3
SevenCore Co. Ltd. 동적 업그레이드 지원 범위 Kernel, LKM, Application – 가능 프로그램의 Code 영역이 수정되었을 경우 - 가능 프로그램의 Data 영역이 수정되었을 경우 – 부분적으로 가능 동적 업그레이드 관련 논문에서는 100% 의 동적 업그레이드 지원을 위해 데 이터 스트럭쳐 업그레이드를 지원해야 함 아직 검증되지 못한 방법 코드 뿐만 아니라 data 영역도 업그레이드를 시도 단점 : 개발자가 업그레이드를 위해 소스를 분석하고 업그레이드 코드를 위해 추가 적으로 코드를 작성해야 하는 등의 일을 수행 즉 자동화된 업그레이드 이미지를 생 성 못함. “2005~2008 리눅스 커널의 보안 패치 중 88% 가 함수 단위의 코드 업그레이 드로 패치가 가능 ” [Ksplice] 4
SevenCore Co. Ltd. 기술 개요 기술 요약 임베디드 시스템을 위한 동적 소프트웨어 업그레이드 기술 실제 만들어야 할 것 시스템 중단 없는 동적 SW 업그레이드를 위한 프레임워크 목표 다양한 임베디드 시스템에서 시스템의 정지 및 재부팅 없이 소프트웨어의 버그패치 및 업그레이드를 수행하는 소프트웨어 솔루션을 개발 동적 업그레이드 프레임워크 패치생성도구 (IDE) Old-New 코드 비교를 통해 작은 크기의 업그레이드 패치파일 자동 생성 업그레이드 서버 타겟시스템으로 패치파일 전송 타겟시스템 관리자 다운받은 패치파일로 RAM 메모리의 수행 코드 수정 (Flash 메모리의 기존 코드 수정 ) 5
SevenCore Co. Ltd. 6 동적 업그레이드 프레임워크 구성 모듈 업그레이드 서버 Application Manager Version Manager Upgrade DM Upgrade DB Target Info Upgrade Image 타겟 시스템 DM Registry SW Info Upgrade Driver Redirection Handler Dynamic Image Updater Safe-point Manager Target Upgrade Manager Firmware Flash Updater Downloader Security Manager 개발도구 (IDE) Upgrade GUI Upgrade Console Upgrade Generator Object Analyzer Version Manager Image Generator Upgrade Engine Source/Object Repository Sources FilesObject Files Network Firmware Manager Security Manager Download Manager Device Info DM Client Software Manager Version Manager Device Manager
SevenCore Co. Ltd. 기술 개발 단계 동적 업그레이드 프레임워크 설계 프로토타입 시스템 구현 & 검증 공개소스 운영체제인 임베디드 리눅스 운영체제 기반 공개 개발도구인 GNU tools – Eclipse 사용 모바일 단말기에 구현 (Mobile Processor) 실제 임베디드 시스템에 적용 개발된 동적 업그레이드 프레임워크를 안드로이드 플랫폼에 적용 7
SevenCore Co. Ltd. 패치 생성 도구 패치파일을 자동으로 생성하는 모듈 이클립스 (Eclipse) Plug-in 으로 구동됨 (Linux & MS Windows) Old-New 오브젝트 파일 비교를 통해 패치파일 자동 생성 Source 및 Object Repository 유지 몇 번의 마우스 클릭으로 패치파일 자동 생성 패치 파일은 ELF 와 유사한 구조 8
SevenCore Co. Ltd. 업그레이드 서버 패치파일을 Target 시스템으로 전송하는 업그레이드 서버 SW 다수의 단말기로 패치파일을 전송 오픈소스 프로젝트 ‘Funambol Framework’ 을 기반으로 제작 단말기 원격관리를 위한 OMA-DM 국제표준을 준수 OMA(Open Mobile Alliance) 에서 제정한 단말기 관리 표준 Device Management Requirements: OMA-RD-DM-V1_2 9
SevenCore Co. Ltd. 타겟 시스템 관리자 타겟시스템의 기존 소프트웨어를 업그레이드, 관리, Redirection 업그레이드 서버로부터 패치 파일을 다운 받아 타겟 시스템의 RAM 에서 구동중인 기존 SW 를 재부팅 없이 신규 SW 로 교체 기존 함수 첫 머리에 illegal instruction 삽입 trap 발생 트랩 핸들러가 새로운 함수로 분기 하는 방식 적용 (old-new 코드 교체 시간 최소화 ) 리눅스 기반 안드로이드 폰에 적용 리눅스 , 안드로이드 1.0 탑재 동적 업그레이드 기능 ( 타겟시스템 관리자 SW) 탑재 10
SevenCore Co. Ltd. 핵심 기술요소 개발도구 - 패치파일 생성 기술 제품 적용 - 스마트폰 적용 오브젝트 파일 비교 분석 기술 패치파일 제작 기술 IDE 환경 통합 (Eclipse Plug-in) 패치파일 압축 기술 안드로이드 플랫폼 구축 기술 동적 업그레이드 솔루션 적용 기술 데몬 프로그램 제작 기술 안드로이드 기반 UI 프로그램 구현 기술 RAM 수행코드 교체 기술 Flash 이미지 Upgrade 기술 Trap handler 처리 기술 성능 개선 기술 타겟시스템 - 패치적용 기술 임베디드 시스템을 위한 동적 소프트웨어 업그레이드 기술 업그레이드 서버 - 다운로드 기술 다운로더 구현 기술 OMA-DM 표준 수용 다운로드 서버 구축 버전 관리자 구현 기술 11
SevenCore Co. Ltd 이미지 등록 타겟 시스템 1. 수정 2.Commit 5. 업그레이드 이미지 생성 4. New-Old 프로젝트 다운로드 8. 연결 설정 9. 장비 정보 교환 10. 업그레이드 지시 12. 이미지 다운로드 13. 업그레이드 실행 업그레이드 관리자 개발자 동적 업그레이드 솔루션 구동 시나리오 3. 업그레이드 요청 7. 업그레이드 요청 소스코드 저장공간 업그레이드 서버
SevenCore Co. Ltd. 13 업그레이드 이미지 생성과정 old kernel sourcenew kernel source kernel object/image file tree kernel object/image file tree kernel objects deference functions kernel binary imagekernel objects firmware delta image dynamic upgrade image kernel binary image build divide object binary diff binary diff processing package Modify delta image + upgrade package additional information For RAMFor Flash
SevenCore Co. Ltd. 동적 업그레이드 RAM 상의 기존 코드를 신규 코드로 교체하기 (1 단계 ) 신규 함수 코드를 RAM 상의 임의 영역에 로드하기 (2 단계 ) Trap 핸들러 수정하기 ( 신규 코드로 jump 하도록 함 ) (3 단계 ) 기존 함수 코드 첫머리에 illegal instruction 삽입하기 SDRAM 구동 SW A B C D E New C 신규 코드 삽입 기존 함수 Function : 신규 ( 수정 ) 함수 Function : illegal Instruction exception Address new function address 0x0000a2110x Upgrade Hash Table 메인 함수 Function : call original function illegal instruction Handler Search a Function address Stack Manipulation
SevenCore Co. Ltd. 15 Previous Program ImageCurrent Program Image Copy Delta File Insert Copy Insert Copy Data Copy Insert Firmware Delta 적용
SevenCore Co. Ltd. 기대 효과 제품 검증시간의 획기적 단축 소프트웨어의 복잡성이 커짐에 따란 버그 가능성 증가 테스팅을 많이 하면 할 수록 버그는 줄어드나 비용은 증가 차후에 발견된 버그는 차후에 수정하여 다시 배포. 제품 시장 적기 출시, 검증비용 절감 국내 단말 제조기술과 시너지 효과를 일으켜 국가 경쟁력 확보에 기여 제품 유지보수 비용의 획기적 절감 원격지에서 자동으로 제품의 SW 를 편리하게 관리 관리 비용 절감 모든 제품의 SW 를 항상 최신 버전으로 관리 가능. 고객 만족도 높임 효율적 SW 업그레이드 수행 단말기 개발회사와 서비스 사업자의 수익 극대화에 기여 서비스 상시성 ( 無정지 ) 유지 상시성이 요구되는 분야의 서비스 단절 방지 ( 국가통신망, 의료기기, 공장생산설비, 발전소, 군용시스템 ) 시스템 중단에 따른 비용손실을 제거 추정이 불가능한 막대한 2 차적 경제적 이득 발생 16
SevenCore Co. Ltd. [ 결과 시연 ] 메인메뉴로 되돌아 가는 버튼 [ 전원키 ] 전원 On/Off ( 부팅에 2 분 소요 ) [ 버그 존재 ] ① 키패드 버그 – 숫자키 오동작 ② 사운드 버그 – 소리 깨짐 시제품 – 리눅스 스마트폰 플랫폼 17
SevenCore Co. Ltd. [ 결과 시연 ] ① 패치파일 생성 업그레이드 서버 ② 패치파일 전송 ( 업로드 ) 개발자 ③ 패치파일 전송 ( 다운로드 ) ④ 패치파일 적용 업그레이드 완료 - 키패드 버그 수정 - 사운드 버그 수정 ( 재부팅 없음 ) - 키패드 디바이스 드라이버 코드 수정 - 사운드 디바이스 드라이버 코드 수정 개발도구 - 이클립스 18
SevenCore Co. Ltd. [ 결과 시연 ] 19
SevenCore Co. Ltd. 감사합니다. Q & A 임베디드 리눅스 기반 동적 소프트웨어 업그레이드 기술 20
SevenCore Co. Ltd. 성능 검증 임베디드 리눅스의 모든 구성 모듈에 대해 검증 실시 수정 후 동적 업그레이드 실시하여 정동작 확인 /usr/src/linux Doc arch includeinit fs kernel ipc lib mm net scripts driver alpha arm m68k mips ppc sparc i386 boot kernel lib math-emu mm asm-alpha asm-arm asm-i linux net scsi video 802 appletalk decnet ethernet ipv4 unix sunrpc x25... block cdrom char net pci pnp sbus scsi... sound video coda ext2 hpfs msdos nfs isofs... ntfs 21
SevenCore Co. Ltd. Dynamic Image 생성 과정 I object 파일 내부의 text section 비교 Object Code 비교 static unsigned int FunctionB() { … 기존 코드 AAA } static unsigned int FunctionB() { … 수정 코드 BBB } : e1a0c00d movip, sp e92dd870 stmdbsp!, {r4, r5, r6, fp, ip, lr, pc} e24cb004 subfp, ip, #4; 0x4 e24dd004 subsp, sp, #4; 0x4 e59040c8 ldrr4, [r0, #200] e1a05000movr5, r0 e ldrr7, [r0, #148] ebfffffebl34 e subsr4, r0, #0; 0x0 e1a01000 movr1, r0 e1a05000 movr5, r : e1a0c00d movip, sp e92dd870 stmdbsp!, {r4, r5, r6, fp, ip, lr, pc} e24cb004 subfp, ip, #4; 0x4 e24dd004 subsp, sp, #4; 0x4 e59040c8 ldrr4, [r0, #200] e1a01000 movr1, r0 e1a05000 movr5, r0 Object Code 비교 22
SevenCore Co. Ltd. Dynamic Image 생성 과정 II 함수 코드 추출 Function A Function B Function D Function E Function F Function G Function H Rodata sections Data sections Text sections : 0:e1a0c00d movip, sp 4:e92ddff0 stmdbsp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} 8:e24cb004 subfp, ip, #4; 0x4 c:e24dd02c subsp, sp, #44; 0x2c... 2c:e1a05000 movr5, r0 30:e ldrr7, [r0, #148] 34:ebfffffe bl34 38:e subsr4, r0, #0; 0x0 3c:b1a08004 movltr8, r :e58da000 strsl, [sp] 5c:e58d9004 strr9, [sp, #4] 60:ebfffffe bl60 64:e subsr8, r0, #0; 0x0 68:1a bne178 fc:e59f0020 ldrr0, [pc, #32]; :ebfffffe bl :e1a00008 movr0, r8 108:e24bd028 subsp, fp, #40; 0x28 10c:e89daff0 ldmiasp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} 110:e1a00005 movr0, r5 23
SevenCore Co. Ltd. Dynamic Image 생성 과정 III 함수 코드 내부 심볼 재배치 : 0:e1a0c00d movip, sp 4:e92ddff0 stmdbsp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc} 8:e24cb004 subfp, ip, #4; 0x4 c:e24dd02c subsp, sp, #44; 0x2c... 2c:e1a05000 movr5, r0 30:e ldrr7, [r0, #148] 34:ebfffffe bl34 38:e subsr4, r0, #0; 0x0 3c:b1a08004 movltr8, r :e58da000 strsl, [sp] 5c:e58d9004 strr9, [sp, #4] 60:ebfffffe bl60 64:e subsr8, r0, #0; 0x0 68:1a bne178 fc:e59f0020 ldrr0, [pc, #32]; :ebfffffe bl :e1a00008 movr0, r8 108:e24bd028 subsp, fp, #40; 0x28 10c:e89daff0 ldmiasp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} 110:e1a00005 movr0, r5 타겟에서 실행 가능하도록 심볼 재 배치 24
SevenCore Co. Ltd. 25 FLASH: Firmware Image Updater Version 1 Image Version 2 Image Delta Generator Byte-Level Difference Image (Delta Image) Install script Byte-Level Difference Image (Delta Image) Install script Flash Image Updater Script 의 내용을 읽고 FLASH 내용 Update create write IN-PLACE Copy !?
SevenCore Co. Ltd. 26 타겟에서 업그레이드 적용 과정 analysis firmware delta image upgrade package analysis dynamic upgrade image firmware delta upgrade register functions check safe point insert illegal instructions relocation functions