B͡ n̩p khͧi t̩o (Boot-loader)

Một phần của tài liệu de_cuong_he_thong_nhung (Trang 72 - 75)

Thuұt ngӳ “bootstrap” bҳt nguӗn tӯ cách diӉn ÿҥt cә xѭa có nghƭD là tӵ mình YѭѫQ lên bҵng chính nӛ lӵc cӫa bҧn thân “pulling yourself up by your own

bootstraps”. Nó ÿã ÿѭӧc sӱ dөng QKѭ mӝt thuұt ngӳ rҩt phә biӃn ÿӇ gӑi tên mӝt phҫn mӅm thӵc thi viӋc khӣi tҥo FKѭѫng trình thӵc thi trên các nӅn vi ÿiӋn tӱ khҧ trình nói chung. ChѭѫQJ trình Qj\ WKѭӡng rҩt nhӓ gӑn và ÿҧm nhiӋm chӭc QăQJ tiӅn hoҥt ÿӝng cӫa hӋ ÿLӅu hành. CNJQJUҩt phә biӃn hiӋn nayQJѭӡi ta cNJng WKѭӡng dùng thuұt ngӳ “bootOoader” (bӝ nҥp khӣi tҥo) thay vì “bootstrap”. Bӝ nҥp khӣi tҥo thӵc chҩt là mӝt FKѭѫQJ trình nhӓ thӵc hiӋn trong hӋthӕng vàÿҧm nhiӋm chӭc QăQJ cҫn thiӃt ÿӇ ÿѭD hӋ ÿLӅu hành vào hoҥt ÿӝng. Trong các hӋ nhúng, các lӋnh ÿѭӧc thӵc hiӋn ÿҫu tiên WKѭӡng nҵm trong các vùng nhӟ ROM và WKѭӡng thuӝc loҥi chұm. Dó ÿy mӝt trong nhӳng tác vө phә biӃn cӫa bӝ nҥp khӣi tҥo là sao chép FKѭѫQJ trình ӭng dөng chính (main program) vào trong vùng bӝ nhӟ nhanh WUѭӟc khi chúng ÿѭӧc thӵc hiӋn. Bӝ nҥp khӣi tҥo cNJQJ có nhiӋm vө khӣi tҥo vùng nhӟ dӳ liӋu và các thanh ghi hӋ thӕng WUѭӟc khi nhҧy tӟi FKѭѫQJ trình ӭng dөng chính. CNJQJ có rҩt nhiӅu dҥng khác nhau cӫa bӝ nҥp khӣi tҥo, tӯ dҥng ÿѫn giҧn ÿӃn phӭc tҥp. Dҥng ÿѫQ giҧn nhҩt có thӇ chӍ là mӝt lӋnh nhҧy tӟi chѭѫQJ trình ӭng dөng chính ngay sau khi reset mà không thӵc hiӋn bҩt kǤ mӝt tác vө khӣi tҥo hay nҥp FKѭѫQJWnh gì. &KѭѫQJ trình ӭng dөng chính sӁ phҧi tӵ thiӃt lұp ÿӇ thӵc thi tác vө

http://www.ebook.edu.vn

This Document is Prepared by Dr. Bui Trung Thanh

7 cӫa mình. Các bӝ nҥp khӣi tҥo phӭc tҥp KѫQ có thӇ thӵc hiӋn nhiӋm vө chuҭn ÿRiQ bӝ nhӟ và khӣi tҥo hӋ thӕng, kiӇm tra FKѭѫQJ trình và nҥp chúng WUѭӟc khi cho bӝ xӱlý nhҧy tӟi thӵc hiӋn cKѭѫQJ trìnhӭng dөng chính.

Sau ÿk\ chúng ta sӁ tìm hiӇu vӅ mӝt mơi trѭӡng phát triӇn khá ÿiӇn hình và thҧo luұn vӅmӝt sӕcác thuӝc tính ngun lýFѫbҧn cӫa bӝnҥp khӣi tҥo.

Hình 4-2: nguyên lý th͹c hi͏n cͯa b͡ n̩p khͧi t̩o boot- loader

Trong môi WUѭӡng phát triӇn hӋ nhúng ÿLӇn hình, nӅn phҫn cӭng ÿtFK cҫn phát triӇQÿѭӧc kӃt nӕi vӟi trҥm chӫ (host) thông qua mӝt giao diӋn truyӅn thông. Mӝt môi WUѭӡng phát triӇn bao gӗm mӝt FKѭѫng trình gӥ rӕi (debugger) ví dө QKѭ

Code Composer Studio cӫa Texas Instrument, ÿӇ cho phép QJѭӡi phát triӇn FKѭѫQJ trình nҥp và thӵc hiӋn thӱ nghiӋm các FKѭѫQJ trình trên phҫn cӭng ÿtFK Mӝt sӕ các cơng cө hӛ trӧ ví dө QKѭ ÿӇ thiӃt lұp các ÿLӇm dӯng (breakpoint)…và các nhiӋm vө phө trӧ khác ÿӇ bám sát trҥng thái quá trình thӵc thi thӡi gian thӵc cӫa FKѭѫQJ trình thӱ nghiӋm. ĈLӅu này rҩt có ý nghƭD và tҥo nên mӝt sӵ dӉ dàng KѫQ trong quá trình phát triӇn và gӥ rӕi mӝt FKѭѫQJWnh ӭng dөng mӟi cho nӅn phҫn cӭngÿtFK

Thơng thѭӡng cácӭng dөng ÿѭӧc phát triӇn trong môi WUѭӡng ngôn ngӳ C thì FKѭѫng trình ӭng dөng chính ÿѭӧc thӵc thi và nҵm trong phҥm vi hàm main() phҫn khӣi tҥRFKѭѫQJ trình và nҥp tiӅn thӵc hiӋn FKѭѫQJ trình chính WKѭӡng khơng Wѭӡng

http://www.ebook.edu.vn

This Document is Prepared by Dr. Bui Trung Thanh

7 minh hoһc bӏ ҭn ÿL Thӵc chҩt ÿLӅu này chӍ ÿ~QJ ÿӕi vӟi nhӳng QJѭӡi phát triӇn mã chѭѫQJ trình ӭng dөng chính bҵng ngôn ngӳ bұc cao ÿһc biӋt cho các ӭng dөng không phҧi cho hӋ nhúng) mà không cҫn phҧi quan tâm nhiӅu ÿӃn các tác vө Fѫ sӣ ÿҧm nhiӋm viӋc khӣi tҥo các thanh ghi hӋ thӕng, ngăn xӃp và dӳ liӋX«ĈLӅu này cNJQJ rҩt có ý nghƭD ÿӇ tҥo ra mӝt cҧm giác và môi WUѭӡng phát triӇn thân thiӋn cho QJѭӡi phát triӇn FKѭѫQJ trình và chӍ cҫn tұp trung phҫn thӵc hiӋn chӭc năng chính cӫa hӋ thӕng. Tuy nhiên trong môiWUѭӡng phát triӇn hӋ thӕng nhúng viӋc thӵc thi FKѭѫQJ trình thѭӡng bҳt ÿҫu tҥi ÿӏa chӍFKѭѫQJ trình QѫLbҳt ÿҫu tác vө khӣi tҥo hӋ thӕng trѭӟc khi nhҧy tӟi thӵc hiӋn FKѭѫng trình chính main(). Q trình này ÿѭӧc bҳt ÿҫu thӵc chҩt là thӵc thi mӝt tác vө ngҳt kích hoҥt bӣi sӵkiӋnreset.

Boot-loader cNJQJ có nhiӅu dҥng khác nhau. Hình 4-2 mơ tҧ mӝt bӝ nҥp khӣi tҥo cho mӝt ӭng dөng C nhúng. Trong ví dө này vector RESET trӓ tӟi thӫ tөc c_int00 thӵc hiӋn tác vө khӣi tҥo. Ngoài viӋc khӣi tҥo các thanh ghi, ngăn xӃp… các biӃn C cNJQJ cҫn ÿѭӧc khӣi tҥo trѭӟc khiÿѭӧc thӵc thi. Quá trình này sӁsao chép tӯ phҫn .cinit và viӃt vào FiFÿӏa chӍ dӳ liӋu WѭѫQJ ӭng cӫa chúng trong phҫn .bss. Sau khi hồn thành cKѭѫQJ trình chính main() mӟi ÿѭӧc gӑi và bҳt ÿҫu thӵc thi. Trong ví dө ÿѫQ giҧn này bӝnҥp khӣi tҥo tә hӧp vector RESET cùng vӟi hàm khӣi tҥo c_int00 và giҧ thiӃt rҵng cҧ FKѭѫQJWUình bӝ nҥp khӣi tҥo và FKѭѫng trình ӭng dөng chính ÿӅu nҵm cùng trong vùng nhӟ vұt lý non- volatile. Trong cácWUѭӡng hӧp hӋ thӕng phӭc tҥp hѫn, bӝ nҥp khӣi tҥo có thӇ bao hàm cҧ tác vө sao chép FKѭѫQJ trình chính vào trong vùng nhӟ fast volatile WUѭӟc khi nó ÿѭӧc gӑi và thӵc thi. Bӝ nҥp khӣi tҥo cNJQJ có thӇ ÿҧm nhiӋm cҧ chӭc QăQJFKXҭn ÿRiQ gӥ rӕi và nâng cҩp hӋ thӕng nӃu có. Chӭc QăQJ chuҭn ÿRiQ có thӇ chӍ là kiӇm tra bӝ nhӟ, ngoҥi vi và ÿӝ WѭѫQJ thích tích hӧp trong hӋ thӕng. Chӭc QăQJ gӥ rӕi cNJQJ có thӇ là mӝt giao diӋn giám sát cung cҩp thông tin và trҥng thái thӡi gian thӵc vӅ hӋthӕng mà QJѭӡi ta vүn WKѭӡng biӃt tӟi vӟi tên gӑi là FKѭѫQJ trình monitoring. ViӋc nâng cҩp hoһc thay

ÿәi FKѭѫQJ trình bӝ nҥp khӣi tҥo cNJQJ có thӇ ÿѭӧc thӵc thi nhӡ khҧQăQJ lұp trình FLASH in-circuit và nҥp tӯ bӝ nhӟ ngồi thơng qua giao diӋn vӟi trҥm chӫ hoһc chӭcQăQJtѭѫQJ tӵ.

http://www.ebook.edu.vn

This Document is Prepared by Dr. Bui Trung Thanh

7

Hình4-3: C̭u trúc b͡ n̩p khͧi t̩o boot-loader

Một phần của tài liệu de_cuong_he_thong_nhung (Trang 72 - 75)

Tải bản đầy đủ (PDF)

(119 trang)