インテルのみ表示可能 — GUID: udn1641803275788
Ixiasoft
1. Nios® V エンベデッド・プロセッサー開発の概要
2. グラフィカル・ユーザー・インターフェイスのガイドライン
3. コマンドラインでの操作方法
4. Nios® V プロセッサー・ソフトウェアの開発と実装
5. Nios® V プロセッサーのボード・サポート・パッケージ・エディター
6. ハードウェア・アブストラクション・レイヤー (HAL) の概要
7. ハードウェア・アブストラクション・レイヤー (HAL) を使用した開発
8. ハードウェア・アブストラクション・レイヤーに向けたデバイスドライバーの開発
9. 例外処理
10. キャッシュおよび密結合メモリー
11. MicroC/OS-II リアルタイム・オペレーティング・システム
12. MicroC/TCP-IP プロトコルスタック
13. FreeRTOS* リアルタイム・オペレーティング・システム
14. 読み取り専用 zip ファイルシステム
15. エンベデッド・ソフトウェアへのコンポーネント情報の公開
16. Nios® V プロセッサー — 付録
A. Nios® V プロセッサー・ソフトウェア開発者ハンドブックのアーカイブ
17. Nios® V プロセッサー・ソフトウェア開発者ハンドブックの改訂履歴
7.1. HAL BSP の設定
7.2. Nios® V プロセッサーエンベデッド・プロジェクトの構造
7.3. system.hシステム記述ファイル
7.4. データ幅と HAL タイプの定義
7.5. UNIX スタイルのインターフェイス
7.6. キャラクター・モード・デバイスの使用
7.7. タイマーデバイスの使用
7.8. フラッシュデバイスの使用
7.9. DMA デバイスの使用
7.10. 割り込みコントローラー
7.11. エンベデッド・システムのコード・フットプリントの削減
7.12. ブートシーケンスとエントリーポイント
7.13. メモリー使用量
7.14. HAL ソースファイルの操作方法
8.1. HAL API でのドライバーの統合
8.2. HAL ペリフェラル固有の API
8.3. HAL ドライバー開発の準備
8.4. デバイスドライバー作成の開発フロー
8.5. Nios® V プロセッサーのハードウェアにおけるデザイン概念
8.6. ハードウェアへのアクセス
8.7. HAL デバイスクラスに向けたエンベデッド・ドライバーの作成
8.8. HAL へのデバイスドライバーの統合
8.9. HAL 用のカスタム・デバイスドライバーの作成
8.10. HAL エンベデッド・ドライバーのコード・フットプリントの削減
8.11. HAL における名前空間の割り当て
8.12. HAL デフォルト・デバイスドライバーのオーバーライド
16.1.1.1. _exit()
16.1.1.2. _rename()
16.1.1.3. alt_dcache_flush()
16.1.1.4. alt_dcache_flush_all()
16.1.1.5. alt_icache_flush_all()
16.1.1.6. alt_dcache_flush_no_writeback()
16.1.1.7. alt_icache_flush_all()
16.1.1.8. alt_icache_flush()
16.1.1.9. alt_alarm_start()
16.1.1.10. alt_alarm_stop()
16.1.1.11. alt_dma_rxchan_depth()
16.1.1.12. alt_dma_rxchan_close()
16.1.1.13. alt_dev_reg()
16.1.1.14. alt_dma_rxchan_open()
16.1.1.15. alt_dma_rxchan_prepare()
16.1.1.16. alt_dma_rxchan_reg()
16.1.1.17. alt_dma_txchan_close()
16.1.1.18. alt_dma_txchan_ioctl()
16.1.1.19. alt_dma_txchan_open()
16.1.1.20. alt_dma_txchan_reg()
16.1.1.21. alt_flash_close_dev()
16.1.1.22. alt_exception_cause_generated_bad_addr()
16.1.1.23. alt_erase_flash_block()
16.1.1.24. alt_dma_rxchan_ioctl()
16.1.1.25. alt_dma_txchan_space()
16.1.1.26. alt_dma_txchan_send()
16.1.1.27. alt_flash_open_dev()
16.1.1.28. alt_fs_reg()
16.1.1.29. alt_get_flash_info()
16.1.1.30. alt_ic_irq_disable()
16.1.1.31. alt_ic_irq_enable()
16.1.1.32. alt_ic_isr_register()
16.1.1.33. alt_ic_irq_enable()
16.1.1.34. alt_instruction_exception_register()
16.1.1.35. alt_irq_cpu_enable_interrupts ()
16.1.1.36. alt_irq_disable_all()
16.1.1.37. alt_irq_enable_all()
16.1.1.38. alt_irq_enabled()
16.1.1.39. alt_irq_init()
16.1.1.40. alt_irq_pending ()
16.1.1.41. alt_llist_insert()
16.1.1.42. alt_llist_remove()
16.1.1.43. alt_load_section()
16.1.1.44. alt_nticks()
16.1.1.45. alt_read_flash()
16.1.1.46. alt_tick()
16.1.1.47. alt_ticks_per_second()
16.1.1.48. alt_timestamp()
16.1.1.49. alt_timestamp_freq()
16.1.1.50. alt_timestamp_start()
16.1.1.51. alt_write_flash()
16.1.1.52. alt_write_flash_block()
16.1.1.53. close()
16.1.1.54. fstat()
16.1.1.55. fork()
16.1.1.56. fcntl()
16.1.1.57. execve()
16.1.1.58. getpid()
16.1.1.59. kill()
16.1.1.60. stat()
16.1.1.61. settimeofday()
16.1.1.62. wait()
16.1.1.63. unlink()
16.1.1.64. sbrk()
16.1.1.65. link()
16.1.1.66. lseek()
16.1.1.67. open()
16.1.1.68. alt_sysclk_init()
16.1.1.69. times()
16.1.1.70. read()
16.1.1.71. write()
16.1.1.72. usleep()
16.1.1.73. alt_lock_flash()
16.1.1.74. gettimeofday()
16.1.1.75. ioctl()
16.1.1.76. isatty()
16.1.1.77. alt_niosv_enable_msw_interrupt()
16.1.1.78. alt_niosv_disable_msw_interrupt()
16.1.1.79. alt_niosv_is_msw_interrupt_enabled()
16.1.1.80. alt_niosv_trigger_msw_interrupt()
16.1.1.81. alt_niosv_clear_msw_interrupt()
16.1.1.82. alt_niosv_register_msw_interrupt_handler()
16.5.2.1. add_memory_device
16.5.2.2. add_memory_region
16.5.2.3. add_section_mapping
16.5.2.4. are_same_resource
16.5.2.5. delete_memory_region
16.5.2.6. delete_section_mapping
16.5.2.7. disable_sw_package
16.5.2.8. enable_sw_package
16.5.2.9. get_addr_span
16.5.2.10. get_assignment
16.5.2.11. get_available_drivers
16.5.2.12. get_available_sw_packages
16.5.2.13. get_base_addr
16.5.2.14. get_break_offset
16.5.2.15. get_break_slave_desc
16.5.2.16. get_cpu_name
16.5.2.17. get_current_memory_regions
16.5.2.18. get_current_section_mappings
16.5.2.19. get_default_memory_regions
16.5.2.20. get_driver
16.5.2.21. get_enabled_sw_packages
16.5.2.22. get_exception_offset
16.5.2.23. get_exception_slave_desc
16.5.2.24. get_fast_tlb_miss_exception_offset
16.5.2.25. get_fast_tlb_miss_exception_slave_desc
16.5.2.26. get_interrupt_controller_id
16.5.2.27. get_irq_interrupt_controller_id
16.5.2.28. get_irq_number
16.5.2.29. get_memory_region
16.5.2.30. get_module_class_name
16.5.2.31. get_module_name
16.5.2.32. get_reset_offset
16.5.2.33. get_reset_slave_desc
16.5.2.34. get_section_mapping
16.5.2.35. get_setting
16.5.2.36. get_setting_desc
16.5.2.37. get_slave_descs
16.5.2.38. is_char_device
16.5.2.39. is_connected_interrupt_controller_device
16.5.2.40. is_connected_to_data_master
16.5.2.41. is_connected_to_instruction_master
16.5.2.42. is_ethernet_mac_device
16.5.2.43. is_flash
16.5.2.44. is_memory_device
16.5.2.45. is_non_volatile_storage
16.5.2.46. is_timer_device
16.5.2.47. log_debug
16.5.2.48. log_default
16.5.2.49. log_error
16.5.2.50. log_verbose
16.5.2.51. set_driver
16.5.2.52. set_ignore_file
16.5.2.53. set_setting
16.5.2.54. update_memory_region
16.5.2.55. update_section_mapping
16.5.2.56. add_default_memory_regions
16.5.2.57. create_bsp
16.5.2.58. generate_bsp
16.5.2.59. get_available_bsp_type_versions
16.5.2.60. get_available_bsp_types
16.5.2.61. get_available_cpu_architectures
16.5.2.62. get_available_cpu_names
16.5.2.63. get_available_software
16.5.2.64. get_available_software_setting_properties
16.5.2.65. get_available_software_settings
16.5.2.66. get_bsp_version
16.5.2.67. get_cpu_architecture
16.5.2.68. get_sopcinfo_file
16.5.2.69. get_supported_bsp_types
16.5.2.70. is_bsp_hal_extension
16.5.2.71. open_bsp
16.5.2.72. save_bsp
16.5.2.73. set_bsp_version
16.5.2.74. set_logging_mode
16.5.3.1. add_class_sw_setting
16.5.3.2. add_class_systemh_line
16.5.3.3. add_module_sw_property
16.5.3.4. add_module_sw_setting
16.5.3.5. add_module_systemh_line
16.5.3.6. add_systemh_line
16.5.3.7. get_class_peripheral
16.5.3.8. get_module_assignment
16.5.3.9. get_module_name
16.5.3.10. get_module_peripheral
16.5.3.11. get_module_sw_setting_value
16.5.3.12. get_peripheral_property
16.5.3.13. remove_class_systemh_line
16.5.3.14. remove_module_systemh_line
16.5.3.15. set_class_sw_setting_property
16.5.3.16. set_module_sw_setting_property
インテルのみ表示可能 — GUID: udn1641803275788
Ixiasoft
5.2.3.3.2. 新しい領域とセクションの作成に向けたリンカー領域の分割
この例は、Nios V プロセッサー命令マネージャーに接続された on_chip_mem という名前のオンチップメモリーを含む任意のハードウェア・デザインで動作します。
# Get region information for on_chip_mem memory region. # Returned as a list. set region_info [get_memory_region on_chip_mem] # Extract fields from region information list. set region_name [lindex $region_info 0] set slave [lindex $region_info 1] set offset [lindex $region_info 2] set span [lindex $region_info 3] # Remove the existing memory region. delete_memory_region $region_name # Compute memory ranges for replacement regions. set split_span 1024 set new_span [expr $span-$split_span] set split_offset [expr $offset+$new_span] # Create two memory regions out of the original region. add_memory_region on_chip_mem $slave $offset $new_span add_memory_region isrs_region $slave $split_offset $split_span add_section_mapping .isrs isrs_region
上記の Tcl スクリプトは、on_chip_mem という名前の領域から 1 KB の RAM を分割し、それに isrs_region という名前を付けてから、add_section_mapping を呼び出して .isrs セクションを isrs_region に追加します。
新しい領域とセクションの作成 Tcl スクリプトの使用
Tcl スクリプトを使用するには、次の手順を実行します。
- 上記の例に示すように、Tcl スクリプトを作成します。
- 次の引数を niosv-bsp コマンドラインに追加します。
--script=<script name>.tcl
- cmake と make を実行してアプリケーションをリビルドします。
オブジェクト・ダンプ・ファイルからの抜粋
cmake と make が正常に完了したら、オブジェクト・ダンプ・ファイル <project_name> .objdump を調べることができます。オブジェクト・ダンプ・ファイルは、新しい .isrs セクションが on_chip_mem あることを示しています。このオブジェクト・ダンプ・ファイルの抜粋は、アドレス範囲が 0x00010000 ~ 0x00019fff のオンチップメモリーを備えたハードウェア・デザインを示しています。
カスタマイズされたリンカーセクションは次のとおりです。
- デフォルトのリンカーセクション (0x00010000 から 0x000192bf まで)
- on_chip_mem 残りの on_chip_mem (0x000192c0 ~ 0x00019bff の範囲)
- isrs カスタマイズされたリンカー領域 (0x00019c00 から 0x00019fff までの範囲)
Sections: Idx Name Size VMA LMA File off Algn . . 2 .isrs 00000000 00019c00 00019c00 00008770 2**0 CONTENTS . . 8 .on_chip_mem 00000000 000192c0 000192c0 00008770 2**0 CONTENTS . . SYMBOL TABLE: 00010000 l d .entry 00000000 .entry 00010020 l d .exceptions 00000000 .exceptions 00019c00 l d .isrs 00000000 .isrs 000102a0 l d .text 00000000 .text 00015cc0 l d .rodata 00000000 .rodata 00015cfc l d .rwdata 00000000 .rwdata 0001776c l d .init_array.00000 00000000 .init_array.00000 000191dc l d .bss 00000000 .bss 000192c0 l d .on_chip_mem 00000000 .on_chip_mem
Linker.x からの抜粋
Linker.x からの抜粋
MEMORY { reset : ORIGIN = 0x10000, LENGTH = 32 on_chip_mem : ORIGIN = 0x10020, LENGTH = 39904 isrs_region : ORIGIN = 0x19c00, LENGTH = 1024 }