SlideShare a Scribd company logo
1 of 30
Download to read offline
Software Freedom Day 2017
Hanoi, 18/09/2017
• Làm việc với máy tính
và học ngôn ngữ lập
trình đầu tiên vào
năm 1981.
– EC1010 (IBM
System/360)
– BASIC
– Fortran
• 8 Years IBM
– Software Specialist
– Technology
Deployment Engineer
– IT Services
– Consultant
• 5 Years Microsoft
– Developer Evangelist
– Senior Consultant
– Software Architect
• XT 8086 4MHz, 8Mhz
• AT 80286 16MHz
• AT 80386
• AT 80486DX
• Pentium…
• PowerPC
• Pascal, Turbo Pascal
• OOP Turbo Pascal
• Assembly
• C, C++
• Java
• RedHat 4
• Caldera
• TurboLinux
• YellowDog
• SCO
• Fedora
• Gentoo
• Ubuntu
• Linux Mint
• Arch Linux
• Embedded Linux là sử dụng Linux trong các hệ
thông nhúng
• Áp dụng nhân Linux và tùy biến các thư viện, các
tiện ích user-space trong các ứng dụng nhúng để
sử dụng chúng trong các đồ điện tử tiêu dùng,
quản sự, y tế, công nghiệp và sản xuất ô-tô.
• Tạo ra một hệ thống Linux nhưng là việc làm giống
như trò chơi ghép hình. Lựa chọn đúng đắn để tạo
ra hệ điều hành.
• Khai thác bộ vi xử lý (đa nhiệm, đa
nhân, phân luồng)
• Dễ phát triển
• Tính mở của toàn hệ thống
• Hệ thống nhỏ, tài nguyên ít
• Hệ thống có tính đặc thù, chuyển dụng
cao
• Hệ thống thời gian thực
• Rẻ, chạy tốt, dễ lập trình
• Tiếp cận được mã nguồn
• Dễ chuyển mang lên các hệ thống kiến trúc
CPU khác
• Có nhiều trình điều khiển thiết bị
• Có rất nhiều ngôn ngũ và thư viện
• Phần mềm có độ mở, module hóa cao, dễ dàng
xây dựng tích hợp phần mềm mới.
• “Khi ta xây dựng từ đầu, nó sẽ là một
tiến trình không bao giờ kết thúc” – Tim
Bird, Sony Entertainment
• Hoàn toàn có thể sử dụng những distro
có sẵn, nhưng bạn sẽ gặp những hạn
chế khi cần sửa đổi.
• Không dễ.
• Để xây dựng được một hệ điều hành hoàn
chỉnh, không chỉ có nhân Linux, bạn sẽ phải xây
dựng và tích hợp các thành phần khác của hệ
điều hành (BootLoader, Libraries,
Commands,…)
• Nhưng bạn hoàn toàn có thể làm được mà
không cần đến bằng Tiến sĩ về xây dựng hệ
điều hành.
• Nếu bạn là người dùng Linux có kinh
nghiệm, và bạn nghĩ cần phải học them
nhiều thứ để làm được Linux nhúng? –
SAI
• Linux – Somethings = EmbeddedLinux
• Không – Android không phải embedded linux.
• Android là phiên bản tùy biến linux nhưng do
Google khởi xướng, có hệ sinh thái riêng tách
biệt với hệ sinh thái linux. Giao diện của
Android được tùy biến để khai thác màn hình
touch screen. Có rất nhiều hàm APIs để lập
trình cho Android, nhưng rất nhiều thiết bị
hoàn toàn không dùng đến các chức năng
Android, chẳng hạn như Google Maps.
• Cross Compiler
– Là compiler có khả năng sinh mã vận hành
trên nền tảng khác với nền tảng của chính
compiler.
• Bộ các công cụ hỗ trợ lập trình để tạo ra
trình ứng dụng khác.
• Một Toolchain đơn giản bao gồm một
trình biên dịch (compiler) và một linker
để biến mã nguồn thành mã máy, các
thư viện để tương tác với hệ điều hành
và một debugger.
• Một bộ công cụ phát triển thông thường trên hệ
thống GNU/Linux là một native toolchain.
• Với các hệ thống nhúng thông thường rất khó để
xây dựng một toolchain native.
– Hệ thống đích thường không đủ không gian lưu trữ và
bộ nhớ.
– Hệ thống đích thường chạy quá chậm.
• Khi đó ta phải dùng Cross-Toolchain, sử dụng trên
một máy nhưng sinh mã chương trình chạy được
trên máy khác.
X86 Binary Target Binary
Source Code
Native ToolChain Cross ToolChain
X86 Target CPU
X86
• Binutils là tập hợp các công cụ để sinh mã và kết nối nhị phân
cho kiến trúc CPU
– as, ld, ar, …
• Kernel headers
– Mô tả các hàm hệ thống, định nghĩa các biến, constant, cấu trúc dữ
liệu
• Thư viện C/C++
– Giao tiếp ứng dụng với hạt nhân (kernel)
– glibc hoặc uClibc
• GCC compiler
• GDB debugger
• Boot Loader (grub, Lilo, Uboot)
• Kernel (Normal or Real-Time)
• FileSystem (FHS)
• Configuration files
• C Library
• Common system commands
• User application(s)
• Bootloader
– Khởi tạo từ phần cứng, các chức năng cơ bản, nạp và vận
hành nhân Linux
• Nhân Linux
– Quản lý tiến trình và bộ nhớ, mạng, điều khiển thiết bị và
cung cấp các dịch vụ cho các ứng dụng user-space
• Thư viện hệ thông (C library)
– Giao tiếp giữa nhân và ứng dụng user-space
• Filesystem
– Bao gồm các lệnh Linux, thư viện và các scripts
• Tích hợp các thành phần, bootloader,
kernel, system libraries và ứng dụng
thành một hệ thống hoàn chỉnh.
• Cài đặt hệ điều hành vào thiết bị.
• Bootloader
– Phần cứng nạp từ địa chỉ cố định trong ROM / Flash
– Khởi tạo thết bị để tìm nhân nằm trên đĩa cứng, mạng hoặc đĩa ngoài.
– Nạp nhân vào bộ nhớ và vận hành
• Kernel
– Tự uncompress
– Khởi tạo lõi nhân và các trình điều khiển thiết bị được biên dịch static để truy cập
root filesystem
– Mount root filesystem có tham số
– Vận hành ứng dụng đầu tiền của userspace (tham số init)
• Vận hành ứng dụng đầu tiền, cấu hình và nạp tiếp các ứng dụng
khác và giao tiếp với user (nếu có)
Hardware
Linux Kernel
app A app B
C Library
User Space
Call a
service
Manage
Hardware
Event
notification
Event
Handler
• Khi bạn đã có hệ thống được tích hợp và
cài đặt, bạn hoàn toàn có thể viết bất kỳ
ứng dụng nào với ngôn ngữ lập trình
chạy được trên hệ điều hành nhúng
Embedded OS của bạn.
Embedded Linux
Embedded Linux

More Related Content

Similar to Embedded Linux

Embedded beta2 new
Embedded beta2 newEmbedded beta2 new
Embedded beta2 newNguyễn Anh
 
Chappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdfChappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdfngtloc2017
 
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPducminh28092018
 
HDH_chuong 1_2019_color.pdf
HDH_chuong 1_2019_color.pdfHDH_chuong 1_2019_color.pdf
HDH_chuong 1_2019_color.pdfHongVitc
 
1.3 - cac cong cu.pdf
1.3 - cac cong cu.pdf1.3 - cac cong cu.pdf
1.3 - cac cong cu.pdfNhungNguynCm1
 
Tran Minh Thai Bai Giang Vc
Tran Minh Thai   Bai Giang VcTran Minh Thai   Bai Giang Vc
Tran Minh Thai Bai Giang VcNhat Thien
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)laonap166
 
tài liệu Mã nguồn mở 02 sudung
tài liệu Mã nguồn mở  02 sudungtài liệu Mã nguồn mở  02 sudung
tài liệu Mã nguồn mở 02 sudungThuyet Nguyen
 
tài liệu Mã nguồn mở Lap trình tren linux
tài liệu Mã nguồn mở  Lap trình tren linuxtài liệu Mã nguồn mở  Lap trình tren linux
tài liệu Mã nguồn mở Lap trình tren linuxThuyet Nguyen
 
02 technical summary of linux distribution
02  technical summary of linux distribution02  technical summary of linux distribution
02 technical summary of linux distributionCơn Gió
 
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco   hệ quản lý nội dung doanh nghiệp nguồn mởAlfresco   hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mởHọc Huỳnh Bá
 
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdfĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdfMan_Ebook
 
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mởBài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mởMasterCode.vn
 
Chuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttChuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttvo nhan
 

Similar to Embedded Linux (20)

Embedded beta2 new
Embedded beta2 newEmbedded beta2 new
Embedded beta2 new
 
Chappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdfChappter 1 - Embedded system presentation.pdf
Chappter 1 - Embedded system presentation.pdf
 
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
DO AN TOT NGHIEPDO AN TOT NGHIEPDO AN TOT NGHIEP
 
HDH_chuong 1_2019_color.pdf
HDH_chuong 1_2019_color.pdfHDH_chuong 1_2019_color.pdf
HDH_chuong 1_2019_color.pdf
 
1.3 - cac cong cu.pdf
1.3 - cac cong cu.pdf1.3 - cac cong cu.pdf
1.3 - cac cong cu.pdf
 
Tran Minh Thai Bai Giang Vc
Tran Minh Thai   Bai Giang VcTran Minh Thai   Bai Giang Vc
Tran Minh Thai Bai Giang Vc
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)
 
--De cuong on tap hdh
 --De cuong on tap hdh --De cuong on tap hdh
--De cuong on tap hdh
 
tài liệu Mã nguồn mở 02 sudung
tài liệu Mã nguồn mở  02 sudungtài liệu Mã nguồn mở  02 sudung
tài liệu Mã nguồn mở 02 sudung
 
tài liệu Mã nguồn mở Lap trình tren linux
tài liệu Mã nguồn mở  Lap trình tren linuxtài liệu Mã nguồn mở  Lap trình tren linux
tài liệu Mã nguồn mở Lap trình tren linux
 
Chapter01 intro
Chapter01 introChapter01 intro
Chapter01 intro
 
02 technical summary of linux distribution
02  technical summary of linux distribution02  technical summary of linux distribution
02 technical summary of linux distribution
 
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco   hệ quản lý nội dung doanh nghiệp nguồn mởAlfresco   hệ quản lý nội dung doanh nghiệp nguồn mở
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
 
Bai 5
Bai 5Bai 5
Bai 5
 
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdfĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
 
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mởBài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mở
 
Chuong2 nmth
Chuong2 nmthChuong2 nmth
Chuong2 nmth
 
Android OS
Android OSAndroid OS
Android OS
 
Sử dụng Linux
Sử dụng LinuxSử dụng Linux
Sử dụng Linux
 
Chuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_htttChuong 2 cac thanh_phan_cua_httt
Chuong 2 cac thanh_phan_cua_httt
 

Embedded Linux

  • 1. Software Freedom Day 2017 Hanoi, 18/09/2017
  • 2. • Làm việc với máy tính và học ngôn ngữ lập trình đầu tiên vào năm 1981. – EC1010 (IBM System/360) – BASIC – Fortran
  • 3. • 8 Years IBM – Software Specialist – Technology Deployment Engineer – IT Services – Consultant • 5 Years Microsoft – Developer Evangelist – Senior Consultant – Software Architect
  • 4. • XT 8086 4MHz, 8Mhz • AT 80286 16MHz • AT 80386 • AT 80486DX • Pentium… • PowerPC • Pascal, Turbo Pascal • OOP Turbo Pascal • Assembly • C, C++ • Java
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. • RedHat 4 • Caldera • TurboLinux • YellowDog • SCO • Fedora • Gentoo • Ubuntu • Linux Mint • Arch Linux
  • 10. • Embedded Linux là sử dụng Linux trong các hệ thông nhúng • Áp dụng nhân Linux và tùy biến các thư viện, các tiện ích user-space trong các ứng dụng nhúng để sử dụng chúng trong các đồ điện tử tiêu dùng, quản sự, y tế, công nghiệp và sản xuất ô-tô. • Tạo ra một hệ thống Linux nhưng là việc làm giống như trò chơi ghép hình. Lựa chọn đúng đắn để tạo ra hệ điều hành.
  • 11. • Khai thác bộ vi xử lý (đa nhiệm, đa nhân, phân luồng) • Dễ phát triển • Tính mở của toàn hệ thống
  • 12. • Hệ thống nhỏ, tài nguyên ít • Hệ thống có tính đặc thù, chuyển dụng cao • Hệ thống thời gian thực
  • 13. • Rẻ, chạy tốt, dễ lập trình • Tiếp cận được mã nguồn • Dễ chuyển mang lên các hệ thống kiến trúc CPU khác • Có nhiều trình điều khiển thiết bị • Có rất nhiều ngôn ngũ và thư viện • Phần mềm có độ mở, module hóa cao, dễ dàng xây dựng tích hợp phần mềm mới.
  • 14. • “Khi ta xây dựng từ đầu, nó sẽ là một tiến trình không bao giờ kết thúc” – Tim Bird, Sony Entertainment • Hoàn toàn có thể sử dụng những distro có sẵn, nhưng bạn sẽ gặp những hạn chế khi cần sửa đổi.
  • 15. • Không dễ. • Để xây dựng được một hệ điều hành hoàn chỉnh, không chỉ có nhân Linux, bạn sẽ phải xây dựng và tích hợp các thành phần khác của hệ điều hành (BootLoader, Libraries, Commands,…) • Nhưng bạn hoàn toàn có thể làm được mà không cần đến bằng Tiến sĩ về xây dựng hệ điều hành.
  • 16. • Nếu bạn là người dùng Linux có kinh nghiệm, và bạn nghĩ cần phải học them nhiều thứ để làm được Linux nhúng? – SAI • Linux – Somethings = EmbeddedLinux
  • 17. • Không – Android không phải embedded linux. • Android là phiên bản tùy biến linux nhưng do Google khởi xướng, có hệ sinh thái riêng tách biệt với hệ sinh thái linux. Giao diện của Android được tùy biến để khai thác màn hình touch screen. Có rất nhiều hàm APIs để lập trình cho Android, nhưng rất nhiều thiết bị hoàn toàn không dùng đến các chức năng Android, chẳng hạn như Google Maps.
  • 18. • Cross Compiler – Là compiler có khả năng sinh mã vận hành trên nền tảng khác với nền tảng của chính compiler.
  • 19. • Bộ các công cụ hỗ trợ lập trình để tạo ra trình ứng dụng khác. • Một Toolchain đơn giản bao gồm một trình biên dịch (compiler) và một linker để biến mã nguồn thành mã máy, các thư viện để tương tác với hệ điều hành và một debugger.
  • 20. • Một bộ công cụ phát triển thông thường trên hệ thống GNU/Linux là một native toolchain. • Với các hệ thống nhúng thông thường rất khó để xây dựng một toolchain native. – Hệ thống đích thường không đủ không gian lưu trữ và bộ nhớ. – Hệ thống đích thường chạy quá chậm. • Khi đó ta phải dùng Cross-Toolchain, sử dụng trên một máy nhưng sinh mã chương trình chạy được trên máy khác.
  • 21. X86 Binary Target Binary Source Code Native ToolChain Cross ToolChain X86 Target CPU X86
  • 22. • Binutils là tập hợp các công cụ để sinh mã và kết nối nhị phân cho kiến trúc CPU – as, ld, ar, … • Kernel headers – Mô tả các hàm hệ thống, định nghĩa các biến, constant, cấu trúc dữ liệu • Thư viện C/C++ – Giao tiếp ứng dụng với hạt nhân (kernel) – glibc hoặc uClibc • GCC compiler • GDB debugger
  • 23. • Boot Loader (grub, Lilo, Uboot) • Kernel (Normal or Real-Time) • FileSystem (FHS) • Configuration files • C Library • Common system commands • User application(s)
  • 24. • Bootloader – Khởi tạo từ phần cứng, các chức năng cơ bản, nạp và vận hành nhân Linux • Nhân Linux – Quản lý tiến trình và bộ nhớ, mạng, điều khiển thiết bị và cung cấp các dịch vụ cho các ứng dụng user-space • Thư viện hệ thông (C library) – Giao tiếp giữa nhân và ứng dụng user-space • Filesystem – Bao gồm các lệnh Linux, thư viện và các scripts
  • 25. • Tích hợp các thành phần, bootloader, kernel, system libraries và ứng dụng thành một hệ thống hoàn chỉnh. • Cài đặt hệ điều hành vào thiết bị.
  • 26. • Bootloader – Phần cứng nạp từ địa chỉ cố định trong ROM / Flash – Khởi tạo thết bị để tìm nhân nằm trên đĩa cứng, mạng hoặc đĩa ngoài. – Nạp nhân vào bộ nhớ và vận hành • Kernel – Tự uncompress – Khởi tạo lõi nhân và các trình điều khiển thiết bị được biên dịch static để truy cập root filesystem – Mount root filesystem có tham số – Vận hành ứng dụng đầu tiền của userspace (tham số init) • Vận hành ứng dụng đầu tiền, cấu hình và nạp tiếp các ứng dụng khác và giao tiếp với user (nếu có)
  • 27. Hardware Linux Kernel app A app B C Library User Space Call a service Manage Hardware Event notification Event Handler
  • 28. • Khi bạn đã có hệ thống được tích hợp và cài đặt, bạn hoàn toàn có thể viết bất kỳ ứng dụng nào với ngôn ngữ lập trình chạy được trên hệ điều hành nhúng Embedded OS của bạn.