2011-12-23 38 views
6

Tôi muốn chuyển hạt nhân xnu sang kiến ​​trúc ARM, với mục tiêu cuối cùng là có thể chạy hạt nhân đầy đủ bên trong Qemu. Trong khi tôi nhận ra rằng đây là một nhiệm vụ rất khó khăn, tôi vẫn muốn có một đi vào nó. Theo như tôi biết, bạn có nghĩa là viết một điểm vào cho hạt nhân (osfmk/arm/start.s) nơi bạn khởi tạo chung (MMU và PlatformExpert) sau đó các hệ thống con Kext/IOKit có thể được khởi động và tải các phần mở rộng CPU cụ thể (ví dụ: bẫy, GPIO, đồng hồ) hoặc được prelinked vào nhị phân hoặc được tải bởi bộ nạp khởi động (vì hạt nhân không thể tương tác với hệ thống tệp do các phần mở rộng NAND không khả dụng)).Chuyển kernel sang một kiến ​​trúc khác?

Trong khi tôi làm có một ý tưởng chung về cách làm việc ARM CPU, tôi thậm chí không biết được nơi để bắt đầu với cổng xnu, bởi vì tôi không hoàn toàn chắc chắn làm thế nào để:

  • Do thấp gỡ lỗi cấp (vì các cơ sở gỡ lỗi hạt nhân không khả dụng sớm trong khi khởi động).
  • Tích hợp nhánh ARM với phần còn lại của cây nguồn hạt nhân (ví dụ: đảm bảo nội dung trong osfmk/kern đang hoạt động).
  • Tạo môi trường lành mạnh cho hạt nhân độc lập nền tảng để bắt đầu (machine_startup());
  • Sửa một số mã nền tảng cụ thể bên trong mã lõi chính (hầu hết mã nền được giới hạn ở osfmk/platform_name nhưng một số mã phải được tích hợp vào osfmk/kern và các loại khác).

Có bất kỳ hướng dẫn đàng hoàng trên porting các XNU (hoặc ít nhất Mach) hạt nhân đến các nền tảng khác nhau, giống như có những hướng dẫn Linux?

+1

+1 Tôi hoan nghênh sự can đảm của bạn. Ai đó phải làm những việc khó nhọc.Tôi không biết bất cứ điều gì về điều này nhưng tôi nghĩ rằng nếu bạn bắt đầu này thì bạn sẽ là một trong đó có thể sẽ viết hướng dẫn gỡ lỗi! Kai Kaha bro. –

Trả lời

2

Không thể cung cấp cho bạn một câu trả lời, nhưng một vài gợi ý:

Các "ông lớn" làm loại công việc này trên một hệ thống với phần cứng đặc biệt gắn liền cho phép bộ vi xử lý là đơn đạp xe, các thanh ghi kiểm tra, vv Và họ có thể làm nhiều công việc trên một trình giả lập có cùng cơ sở. Cài đặt trình gỡ lỗi phần cứng có thể nằm ngoài khả năng của bạn để xây dựng (và tốn kém một chút để mua), nhưng trình mô phỏng hoàn toàn khả thi (và Gates và Allen đã bắt đầu với Altair BASIC như thế nào - nếu Allen không viết giả lập Gates sẽ vẫn đang chơi trò chơi điện tử tại Harvard).

Viết tắt trình gỡ rối đầy đủ, nếu bạn có bất kỳ loại màn hình ký tự nào được đính kèm, bạn có thể nhúng hướng dẫn trong mã đang được sửa lỗi để ghi ký tự vào màn hình khi mã đang tiến hành. Đường dẫn A có thể viết "A" ở vị trí tiếp theo (chỉ mục được lưu trong từ bộ nhớ dành riêng ở đâu đó) trong khi đường B sẽ viết "B", v.v. Rất thô, nhưng đôi khi đủ để nhận được cho các dự án nhỏ.

Vì vậy, tôi đoán tôi khuyên bạn nên viết trình giả lập trước. Đó là một cách hay để làm quen với bộ xử lý.

(Như để tích hợp công cụ, tôi luôn chỉ nói: "Này, Jeremy! Tích hợp này đối với tôi, sẽ giúp bạn?")

1

Bạn sẽ gặp phải một chút của một thách thức như không phải tất cả các mã nguồn có sẵn . Một phần của mã nguồn của chuyên gia Platform có sẵn như một phần của các nguồn xnu, tuy nhiên com.apple.driver.AppleACPIPlatform.kext thì không.