2009-10-08 7 views
8

Tôi phải chọn đề tài luận án sớm và tôi đang cân nhắc triển khai hệ điều hành cho kiến ​​trúc không phải là x86 (tôi đang hướng tới ARM hoặc AVR). Lý do tôi tránh x86 là bởi vì tôi muốn đạt được một số kinh nghiệm với các nền tảng nhúng và tôi (có thể không chính xác) tin rằng nhiệm vụ có thể dễ dàng hơn khi thực hiện trên quy mô nhỏ hơn. Có ai có bất kỳ con trỏ đến các trang web hoặc tài nguyên, nơi có một số ví dụ về điều này. Tôi đã đọc qua hầu hết nếu không phải tất cả các câu hỏi của OSDev về tràn ngăn xếp, và tôi cũng biết về AvrFreaks và OSDev. Ngoài ra nếu có ai có kinh nghiệm trong lĩnh vực này và muốn cung cấp một số lời khuyên liên quan đến cách tiếp cận hoặc nền tảng nó sẽ được nhiều đánh giá cao.Phát triển hệ điều hành không phải là x86

Cảm ơn

+0

Hoặc bạn có thể tham gia cùng tôi trong nhiệm vụ tìm kiếm một bản sao của Exec (AmigaOS) cho Amiga ban đầu. ;-) –

Trả lời

7

Phát triển một hệ điều hành (RT) không phải là một nhiệm vụ tầm thường. Nó là rất giáo dục mặc dù. Lời khuyên của tôi cho bạn là bắt đầu phần cứng độc lập. PC là một điểm khởi đầu tốt vì nó đi kèm với rất nhiều khả năng I/O và gỡ lỗi tốt. Nếu bạn tạo một ứng dụng máy ảo, bạn có thể tạo ra một thứ gì đó với các khả năng nền tảng đơn giản (đầu ra của bàn điều khiển, một số nút/chỉ báo là một khởi đầu tốt). Ngoài ra, bạn có thể sử dụng các tập tin ví dụ, để đầu ra thời gian (lịch trình) Nếu bạn bắt đầu vào 'kim loại trần' bạn sẽ phải bắt đầu từ đầu. Gỡ lỗi trên đèn LED (bật/tắt/nhấp nháy) rất khó và tốn thời gian. Lời khuyên thứ hai của tôi là xác định phạm vi của bạn sớm: đó có phải là bộ lập lịch, các cơ chế truyền thông hoặc các hệ thống tệp mà bạn quan tâm không ...? Làm tất cả có thể dễ dàng kết thúc trong một dự án dài suốt đời.

Samek, Miro, Practical UML Statecharts in C/C++ chứa một số phần thú vị trên microkernel. Đó là một trong những cuốn sách yêu thích của tôi. Advanced PIC Microcontroller Projects in C: From USB to RTOS with the PIC 18F Series dường như bao hàm một số sở thích của bạn; Tôi chưa đọc nó. Operating Systems: Internals and Design Principles cũng có thể mang lại thông tin chi tiết tốt. Nó bao gồm tất cả các khía cạnh từ bộ lập lịch đến ngăn xếp mạng. Chúc may mắn!

2

Contiki có thể là một điều tốt để nghiên cứu. Nó rất nhỏ, chạy trên vi điều khiển, và là mã nguồn mở. Đô thị này có một thiên vị nặng nề đối với mạng và thông tin liên lạc, nhưng có lẽ bạn có thể bỏ qua những phần đó và tập trung vào hạt nhân.

2

Nếu bạn chọn ARM, hãy lấy một bản sao Hướng dẫn dành cho nhà phát triển hệ thống ARM (Sloss, Symes, Wright). Link to Amazon

Chương 11 thảo luận về việc triển khai hệ điều hành nhúng đơn giản, với các giải thích và mã mẫu tuyệt vời.

4

Có vẻ như bạn sẽ nhận được một bản sao cuốn sách của Jean Labrosse MicroC/OS.

Dường như anh ấy cũng vừa cập nhật nó.

http://micrium.com/page/press_room/news/id:40

http://micrium.com/page/home

Đây là một cuốn sách cũng là tài liệu mô tả các hoạt động bên trong của một RTOS viết bằng C và được chuyển đến nhiều bộ xử lý nhúng. Bạn cũng có thể chạy nó trên một x86, và sau đó vượt qua biên dịch để xử lý khác.

2

ARM và AVR là phấn và phô mai - bạn đã phạm vi này rất rộng!

Bạn có thể tạo ra một hệ điều hành rất khác và tinh vi hơn cho ARM so với AVR (trừ khi bạn đang nói về AVR32 có lẽ - đó là một kiến ​​trúc hoàn toàn khác?).

AVR sẽ bị ràng buộc nhiều hơn đến mức mà nhiệm vụ có thể chỉ là tầm thường đối với phạm vi của luận án của bạn. Thậm chí chỉ định ARM không thu hẹp nó xuống nhiều; các bộ phận ARM cấp thấp có ký ức nhỏ trên chip, không có MMU và các thiết bị ngoại vi đơn giản; phần cuối cao hơn có một MMU, dữ liệu/hướng dẫn lưu trữ, thường là một GPU, đôi khi một FPU, phần cứng Java bytecode thực hiện, và nhiều thiết bị ngoại vi phức tạp khác. Thuật ngữ 'ARM' bao gồm ARM7, ARM9, ARM11, Cortex M3, Cortex M8, cộng với một số kiến ​​trúc được thiết kế để sử dụng trên ASIC và FPGA - vì vậy bạn cần thu hẹp nó xuống một chút?

Nếu bạn chọn ARM, hãy xem these resources. Đặc biệt là các hướng dẫn của Insider từ Hitex, và "Xây dựng ARM kim loại trần với GNU", chúng sẽ giúp bạn có được bảng của bạn 'lên' và hình thành điểm khởi đầu cho hệ điều hành của bạn.

1

Điều đầu tiên tôi khuyên bạn nên thu hẹp chủ đề luận án của mình một cách đáng kể. Các hệ điều hành có mặt khắp mọi nơi, được nghiên cứu và phát triển tốt. Ý tưởng tiểu thuyết nào bạn hy vọng theo đuổi?

Điều đó nói rằng, AvrX là một rất vi nhân nhỏ mà tôi đã sử dụng chuyên nghiệp trên vi điều khiển AVR. Nó được viết trong hội đồng. Một người bắt đầu chuyển nó sang C, nhưng chưa hoàn thành cổng. Hoặc là hoàn thành cổng đến C và/hoặc tạo cổng C cho kiến ​​trúc AVR32 sẽ có giá trị.

1

Hệ điều hành không được kết hợp chặt chẽ với bất kỳ bộ vi xử lý để ARM hoặc x86 không quan trọng. Nó sẽ là một chủ đề lớn hơn, nếu chúng ta bắt đầu thảo luận nếu ARM được nhúng và x86 thì không. Dù sao, có rất nhiều nơi mà bộ xử lý x86 được sử dụng để phát triển phần mềm nhúng.

Tôi đoán hầu hết mã hạt nhân sẽ chỉ đơn giản là C lanugage. Có rất nhiều miễn phí Hệ điều hành đã có sẵn, chẳng hạn như Linux nhúng, Phiên bản miễn phí của Itron, minix, v.v ... Nó sẽ là một nhiệm vụ khó khăn.

Nhưng mặt khác, những gì bạn có thể thử là, cổng nhúng Linux vào nền tảng mà nó chưa hoạt động. Điều này sẽ thực sự hữu ích cho thế giới.

2

Ngớ ngẩn như nó có thể phát ra, gần đây tôi đã quan tâm đến nền tảng Arduino để tìm hiểu một số thủ thuật hacking với sự giúp đỡ của bạn bè có kinh nghiệm hơn. Ngoài ra còn có this thread cho một anh chàng quan tâm đến việc viết một hệ điều hành cho nó (mặc dù không phải là ý định chính của mình).

Tôi nghĩ Arduino rất cơ bản và đơn giản như một công cụ giáo dục cho những nỗ lực như vậy. Nó có thể có giá trị thử kiểm tra nó ra nếu nó phù hợp với hóa đơn.

1

RTOS hầu như không bao giờ là kiến ​​trúc cụ thể. Tham khảo bất kỳ kiến ​​trúc RTOS nào có sẵn trên mạng và bạn sẽ thấy rằng một lớp trừu tượng CPU/Phần cứng tóm tắt CPU. Các phần cụ thể của bảng (đối phó với các thiết bị ngoại vi như cổng com, bộ hẹn giờ, vv) được tóm tắt bởi một gói hỗ trợ bảng.

Để bắt đầu, hãy tìm hiểu cách hoạt động của đa luồng trong RTOS thử triển khai mã chuyển đổi ngữ cảnh đơn giản cho CPU mà bạn chọn; điều này sẽ liên quan đến mã để tạo ngữ cảnh luồng, lưu ngữ cảnh và khôi phục ngữ cảnh đã lưu. Mã này sẽ tạo thành cơ sở cho lớp trừu tượng phần cứng của bạn. Việc phát triển ban đầu có thể dễ dàng được thực hiện bằng cách sử dụng phần mềm mô phỏng cho CPU đã chọn.

Tôi đồng ý với người đăng đề xuất đọc sách, uCOS-II của Jean Labrosse. Các mẫu mã chuyển đổi ngữ cảnh, đặc biệt đối với x86, nên chỉ là tìm kiếm trên google!