このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
1. Nios® Vエンベデッド・プロセッサーの開発の概要
2. コマンドラインから始める
3. Nios® Vプロセッサー・ソフトウェアの開発と実装
4. Nios® V プロセッサー ボード・サポート・パッケージ・エディター
5. ハードウェア・アブストラクション・レイヤ(HAL)の概要
6. ハードウェア・アブストラクション・レイヤ(HAL)を使用した開発
7. ハードウェア抽象化レイヤーのデバイスドライバーの開発
8. 例外処理
9. MicroC/OS-IIリアルタイム・オペレーティング・システム
10. MicroC/TCP-IP プロトコルスタック
11. コンポーネント情報を組み込みソフトウェアに発行
12. Nios® V プロセッサーの付録
A. Nios® V プロセッサー・ソフトウェア開発者ハンドブックのアーカイブ
13. Nios® V プロセッサー・ソフトウェア開発者ハンドブックの改訂履歴
6.1. HAL BSPの設定
6.2. Nios® V プロセッサー組み込みプロジェクトの構造
6.3. system.h システム記述ファイル
6.4. データ幅と HAL タイプの定義
6.5. UNIX スタイルのインターフェース
6.6. キャラクター・モード・デバイスの使用
6.7. タイマーデバイスの使用
6.8. フラッシュデバイスの使用
6.9. DMAデバイスの使用
6.10. 割り込みコントローラー
6.11. エンベデッド・システムのコード・フットプリントの削減
6.12. ブートシーケンスとエントリーポイント
6.13. メモリー使用量
6.14. HAL ソースファイルの操作
7.1. HAL API でのドライバーの統合
7.2. HAL ペリフェラル固有の API
7.3. HAL ドライバー開発の準備
7.4. デバイスドライバー作成の開発フロー
7.5. Nios® V プロセッサーのハードウェアのデザイン概念
7.6. ハードウェアへのアクセス
7.7. HAL デバイスクラスの組み込みドライバーの作成
7.8. デバイスドライバーを HAL に統合する
7.9. HAL 用のカスタム・デバイス・ドライバーの作成
7.10. HAL 組み込みドライバーのコード・フットプリントの削減
7.11. HAL 名前空間の割り当て
7.12. HAL デフォルト・デバイス・ドライバーのオーバーライド
12.1.1.1. _exit()
12.1.1.2. _rename()
12.1.1.3. alt_dcache_flush()
12.1.1.4. alt_dcache_flush_all()
12.1.1.5. alt_icache_flush_all()
12.1.1.6. alt_dcache_flush_no_writeback()
12.1.1.7. alt_uncached_malloc()
12.1.1.8. alt_uncached_free()
12.1.1.9. alt_remap_uncached()
12.1.1.10. alt_remap_cached()
12.1.1.11. alt_icache_flush_all()
12.1.1.12. alt_icache_flush()
12.1.1.13. alt_alarm_start()
12.1.1.14. alt_alarm_stop()
12.1.1.15. alt_dma_rxchan_depth()
12.1.1.16. alt_dma_rxchan_close()
12.1.1.17. alt_dev_reg()
12.1.1.18. alt_dma_rxchan_open()
12.1.1.19. alt_dma_rxchan_prepare()
12.1.1.20. alt_dma_rxchan_reg()
12.1.1.21. alt_dma_txchan_close()
12.1.1.22. alt_dma_txchan_ioctl()
12.1.1.23. alt_dma_txchan_open()
12.1.1.24. alt_dma_txchan_reg()
12.1.1.25. alt_flash_close_dev()
12.1.1.26. alt_exception_cause_generated_bad_addr()
12.1.1.27. alt_erase_flash_block()
12.1.1.28. alt_dma_rxchan_ioctl()
12.1.1.29. alt_dma_txchan_space()
12.1.1.30. alt_dma_txchan_send()
12.1.1.31. alt_flash_open_dev()
12.1.1.32. alt_fs_reg()
12.1.1.33. alt_get_flash_info()
12.1.1.34. alt_ic_irq_disable()
12.1.1.35. alt_ic_irq_enable()
12.1.1.36. alt_ic_isr_register()
12.1.1.37. alt_ic_irq_enable()
12.1.1.38. alt_instruction_exception_register()
12.1.1.39. alt_irq_cpu_enable_interrupts ()
12.1.1.40. alt_irq_disable_all()
12.1.1.41. alt_irq_enable_all()
12.1.1.42. alt_irq_enabled()
12.1.1.43. alt_irq_init()
12.1.1.44. alt_irq_pending ()
12.1.1.45. alt_llist_insert()
12.1.1.46. alt_llist_remove()
12.1.1.47. alt_load_section()
12.1.1.48. alt_nticks()
12.1.1.49. alt_read_flash()
12.1.1.50. alt_tick()
12.1.1.51. alt_ticks_per_second()
12.1.1.52. alt_timestamp()
12.1.1.53. alt_timestamp_freq()
12.1.1.54. alt_timestamp_start()
12.1.1.55. alt_write_flash()
12.1.1.56. alt_write_flash_block()
12.1.1.57. close()
12.1.1.58. fstat()
12.1.1.59. fork()
12.1.1.60. fcntl()
12.1.1.61. execve()
12.1.1.62. getpid()
12.1.1.63. kill()
12.1.1.64. stat()
12.1.1.65. settimeofday()
12.1.1.66. wait()
12.1.1.67. unlink()
12.1.1.68. sbrk()
12.1.1.69. link()
12.1.1.70. lseek()
12.1.1.71. open()
12.1.1.72. alt_sysclk_init()
12.1.1.73. times()
12.1.1.74. read()
12.1.1.75. write()
12.1.1.76. usleep()
12.1.1.77. alt_lock_flash()
12.1.1.78. gettimeofday()
12.1.1.79. ioctl()
12.1.1.80. isatty()
12.1.1.81. alt_niosv_enable_msw_interrupt()
12.1.1.82. alt_niosv_disable_msw_interrupt()
12.1.1.83. alt_niosv_is_msw_interrupt_enabled()
12.1.1.84. alt_niosv_trigger_msw_interrupt()
12.1.1.85. alt_niosv_clear_msw_interrupt()
12.1.1.86. alt_niosv_register_msw_interrupt_handler()
12.5.2.1. add_memory_device
12.5.2.2. add_memory_region
12.5.2.3. add_section_mapping
12.5.2.4. are_same_resource
12.5.2.5. delete_memory_region
12.5.2.6. delete_section_mapping
12.5.2.7. disable_sw_package
12.5.2.8. enable_sw_package
12.5.2.9. get_addr_span
12.5.2.10. get_assignment
12.5.2.11. get_available_drivers
12.5.2.12. get_available_sw_packages
12.5.2.13. get_base_addr
12.5.2.14. get_break_offset
12.5.2.15. get_break_slave_desc
12.5.2.16. get_cpu_name
12.5.2.17. get_current_memory_regions
12.5.2.18. get_current_section_mappings
12.5.2.19. get_default_memory_regions
12.5.2.20. get_driver
12.5.2.21. get_enabled_sw_packages
12.5.2.22. get_exception_offset
12.5.2.23. get_exception_slave_desc
12.5.2.24. get_fast_tlb_miss_exception_offset
12.5.2.25. get_fast_tlb_miss_exception_slave_desc
12.5.2.26. get_interrupt_controller_id
12.5.2.27. get_irq_interrupt_controller_id
12.5.2.28. get_irq_number
12.5.2.29. get_memory_region
12.5.2.30. get_module_class_name
12.5.2.31. get_module_name
12.5.2.32. get_reset_offset
12.5.2.33. get_reset_slave_desc
12.5.2.34. get_section_mapping
12.5.2.35. get_setting
12.5.2.36. get_setting_desc
12.5.2.37. get_slave_descs
12.5.2.38. is_char_device
12.5.2.39. is_connected_interrupt_controller_device
12.5.2.40. is_connected_to_data_master
12.5.2.41. is_connected_to_instruction_master
12.5.2.42. is_ethernet_mac_device
12.5.2.43. is_flash
12.5.2.44. is_memory_device
12.5.2.45. is_non_volatile_storage
12.5.2.46. is_timer_device
12.5.2.47. log_debug
12.5.2.48. log_default
12.5.2.49. log_error
12.5.2.50. log_verbose
12.5.2.51. set_driver
12.5.2.52. set_ignore_file
12.5.2.53. set_setting
12.5.2.54. update_memory_region
12.5.2.55. update_section_mapping
12.5.2.56. add_default_memory_regions
12.5.2.57. create_bsp
12.5.2.58. generate_bsp
12.5.2.59. get_available_bsp_type_versions
12.5.2.60. get_available_bsp_types
12.5.2.61. get_available_cpu_architectures
12.5.2.62. get_available_cpu_names
12.5.2.63. get_available_software
12.5.2.64. get_available_software_setting_properties
12.5.2.65. get_available_software_settings
12.5.2.66. get_bsp_version
12.5.2.67. get_cpu_アーキテクチャー
12.5.2.68. get_sopcinfo_file
12.5.2.69. get_supported_bsp_types
12.5.2.70. is_bsp_hal_extension
12.5.2.71. open_bsp
12.5.2.72. save_bsp
12.5.2.73. set_bsp_version
12.5.2.74. set_logging_mode
12.5.3.1. add_class_sw_setting
12.5.3.2. add_class_systemh_line
12.5.3.3. add_module_sw_property
12.5.3.4. add_module_sw_setting
12.5.3.5. add_module_systemh_line
12.5.3.6. add_systemh_line
12.5.3.7. get_class_peripheral
12.5.3.8. get_module_assignment
12.5.3.9. get_module_name
12.5.3.10. get_module_peripheral
12.5.3.11. get_module_sw_setting_value
12.5.3.12. get_peripheral_property
12.5.3.13. remove_class_systemh_line
12.5.3.14. remove_module_systemh_line
12.5.3.15. set_class_sw_setting_property
12.5.3.16. set_module_sw_setting_property
4.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に追加します。
新しい領域とセクションの作成 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 (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を調べると、llinker.xが新しい領域isrs_region をMEMORY のon_chip_mem領域に隣接して配置していることがわかります。linker.x からの抜粋
MEMORY
{
reset : ORIGIN = 0x10000, LENGTH = 32
on_chip_mem : ORIGIN = 0x10020, LENGTH = 39904
isrs_region : ORIGIN = 0x19c00, LENGTH = 1024
}