Làm cách nào để biết phạm vi địa chỉ RAM bộ nhớ nào đang được sử dụng bởi uboot?


12

Tôi đang ở trong uboot và đang tự hỏi, làm thế nào tôi có thể biết phạm vi địa chỉ RAM nào đang được sử dụng bởi uboot.

uboot cần bộ nhớ để chạy nên có thể nó đang sử dụng một số RAM. Tôi muốn tránh sửa đổi các địa chỉ RAM.

Làm thế nào để tôi biết vùng bộ nhớ nào được tải?

Câu trả lời:


2

Trang DULG DebuggingUBoot có điều này để nói ("sự di dời" mà nó nói đến là sao chép chính nó từ flash sang RAM).

Để gỡ lỗi U-Boot sau khi di chuyển, chúng ta cần biết địa chỉ mà U-Boot tự di chuyển đến. Khi không có tính năng kỳ lạ như PRAM được sử dụng, địa chỉ này thường là - CONFIG_SYS_MONITOR_LEN. Trong ví dụ của chúng tôi với RAM 16 MB và CONFIG_SYS_MONITOR_LEN = 192KB, điều này mang lại địa chỉ 0x1000000 - 0x30000 = 0xFD0000.

Việc đọc thêm văn bản dường như cho thấy nó phụ thuộc vào bộ xử lý hoặc bo mạch và bạn có thể phải kiểm tra nguồn U-Boot để biết chắc chắn.

Về Guruplug :

Về phía RAM, u-Boot có 8 megabyte đầu tiên được dành riêng. Phần còn lại là miễn phí. Một số nhà phát triển sẽ tải hạt nhân và hệ thống tệp ở 0 × 800000 để lập trình flash. Một điểm phổ biến khác là ở ranh giới 100 megabyte (hoặc bù 0 × 640000).

Tùy thuộc vào phiên bản lệnh U-Boot của bạn có thể có sẵn để đặt một chuỗi ở đâu đó trong RAM miễn phí và sau đó săn phần còn lại của RAM cho chuỗi đó, cho thấy vị trí gần đúng của U-Boot trong bộ nhớ.


1

Khi tôi khởi động phiên bản uboot mà tôi đang sử dụng, nó sẽ tự động hiển thị "bố cục bộ nhớ hạt nhân ảo".

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

Tôi thấy an toàn khi sử dụng vùng lowmem cho các quy trình tiện ích khác nhau mà tôi muốn chạy (như tải các tệp lớn vào bộ nhớ). Lý tưởng nhất, tôi nghĩ rằng bạn muốn sử dụng bộ nhớ cao cho loại điều đó, nhưng tôi không có tùy chọn (như bạn có thể thấy trong đầu ra của tôi).


Bạn có chắc chắn đó không phải là bản đồ bộ nhớ của Linux?
đất sét

Tôi không chắc chắn. Việc thiếu highmem và tham chiếu đến "Hạt nhân ảo" khiến tôi nghĩ khác. Tôi là một noob / hack khi nói đến uboot. Điểm quan trọng ở đây là tôi có thể sử dụng phạm vi lowmem đó một cách an toàn mà không cần viết lên bất cứ thứ gì mà uboot dường như yêu cầu.
BuvinJ

Như tôi nhớ, điều này được hiển thị trước khi tải hệ điều hành btw.
BuvinJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.