予備的理解hi3559v100 SDKダブルAMPシステムアーキテクチャ

hi3559v100ハスは、カメラのSOCプロセッサを発売しています。これは、デュアルコアプロセッサを使用しています。一つはlinux3.18カーネルを実行している、A7です。一つは、A17の使用であるHi3559V100システムHuawei社LiteOSメディアコーデックは、システム関連事業を担当し、huaweiliteosオペレーティングシステムです。アンプのフォームを達成するために2つのオペレーティングシステムの構築。

まず、SDKの中身を見てください。

次のように別に2つのSDKパッケージのディレクトリを抽出します:

画像

組込みソフトウェア開発として、以下の二つのディレクトリに焦点を当て:

  1. ハードウェア

メインは、いくつかのデータシート、デモ・ボードの概略図です。

  1. あるSofaWare

開発するために使用されるエンドプレート、PC端末、携帯端末およびデバッグ保守パッケージ、ツールキットおよびマニュアル

1. SDKのソフトウェアアーキテクチャ:

画像

  1. OSDRV層は、主にデュアルコア通信を駆動する、そのようなブートローダ、OS、rootfsのテンプレート、キードライバとクロスコンパイラツールチェーンのような基礎となるサポートパッケージシステムを提供します。
  2. 等VI、VPSS、VENC、VO等のメインメディアライブラリに関連する駆動モジュールを含むMPP層及び監視SDK元の一貫性は、外部のMPIインターフェースを提供します。
  3. Hisyslink通信システムは、メッセージ通信、2つのシステム間のデータ転送のためのデュアルコア二成分です。二つのシステムの難しさを減らすために、お客様の開発を簡素化するために、SDKパッケージは、実際の製品開発プロセスでは、顧客は、MPIインターフェースは、ターゲット市場の製品形態に基づいて基づくことができる、あなたの参考のために、メディア適応NDK参照コードを提供しますオーディオおよびビデオデータストリームとビジネス機能を再シール。
  4. ミドルウェア層は、ように、ビデオ、写真、文書管理、再生、GUI、ネットワーク伝送などの典型的な主なビジネス・コンポーネントを提供し。

デュアルコア事業の2 SDKの展開:

画像

  1. NDKのメディアサービスは、デュアルシステムで展開します。

NDK、すなわち、メディア関連の機能は、実質的に特定の実装(すなわち、MAPIローカルモード)モジュールであり、およびMAPIクライアント側インターフェイスのLinuxを提供することにより、外部メディアサービスHuawei社LiteOSを提供します。MAPIローカルおよびMAPIクライアント間のデュアルコア通信コンポーネントHisyslinkを介して通信します。

  1. Middleware 和 References 在 Linux 侧部署,便于用户扩展。

  2. 硬件资源在双系统部署。

媒体相关硬件部署在 Huawei LiteOS 侧;但外设控制器及其相关中断,内存等硬件资源应该根据产品需要,进行双系统部署。

3. IPCM

在soc上部署的amp构架,一个linux,一个是huawei liteos。两个系统间的通信机制:ICMP

Linux+Huawei LiteOS 双系统业务部署中,媒体业务的硬件资源及功能实现都部署在Huawei LiteOS 端,并通过核间通信,把媒体服务延伸到 Linux 端,Linux 提供和Huawei LiteOS 端相同的接口定义。这就需要 Linux 和 Huawei LiteOS 提供核间通信机制,为媒体业务提供消息通信和大块数据通信机制。核间通信组件IPCM 就是专门为Linux+Huawei LiteOS 双系统核间通信设计的底层组件。

IPCM 的底层通信机制基于共享内存+中断方式实现。

IPCM 是基于共享内存区域实现多核通信的,每个核(OS)拥有一块自己的内存区域(基址+长度),同时知道其它每个核(OS)拥有的内存区域(基址+长度)。

发送消息(带消息头)时,需指定目标核 ID(target)和端口(port),将消息填充到目标的内存区域。

接收消息时,从自己的内存区域读取数据,根据消息头读取一个消息。

双核之间通过 GIC 中断通知对方有消息准备好,需要对方读取。

Hi3559V100 在 IPCM 基础上再封装实现 HisysLink 子系统,一般情况下不直接访问IPCM 接口进行双核通信。这里只介绍 IPCM 模块的初始化动作。

  • Linux 端

挂载 hi_ipcm.ko

  • Huawei LiteOS 端

调用_ipcm_vdd_init();初始化 IPCM 模块。

由于 IPCM 使用一片内存区域供 Linux 与 Huawei LiteOS 共同访问实现消息通信。当执行 rmmod hi_ipcm 卸载完 Linux 的 IPCM 模块后,也需要在 Huawei LiteOS 调用_ipcm_vdd_cleanup 去初始化 IPCM。如果 Linux 与 Huawei LiteOS 两端初始化与去初始化 IPCM 不一致(比如一端去初始化并再次初始化 IPCM,另一端不执行相应操作),将会导致内部共享内存区域未同步,造成访问异常地址而出现系统挂死。

4. 共享文件系统sharefs:

Huawei LiteOS 上运行的某些应用需要进行一些配置文件的读写和临时中间文件的产生和删除。但 Hi3559V100 的 flash、sd、usb 均部署在 Linux 端,导致 Huawei LiteOS 无法使用 yaffs、FAT 之类文件系统进行文件的访问。因此开发 Sharefs 文件系统,在Huawei LiteOS 端虚拟一个文件系统,利用 IPCM 通信和共享内存,实现其读写 Linux上指定目录下的内容。Sharefs 可以帮助 Huawei LiteOS 从 Linux 端读写文件,类似于NFS。Sharefs 指定访问 Linux 的目录可作为 flash,sd,usb,nfs 等的挂载点。这样,可实现 Huawei LiteOS 通过 Sharefs 访问 yaffs、FAT、NFS 等文件系统。将 Huawei LiteOS 需要访问的文件放在 Linux 端 Sharefs 指定目录,Huawei LiteOS 即可访问其需要的文件。假如共享的目录是liteos这个目录,Huawei LiteOS 端访问/liteos 目录,即为 Linux 端实际目录/liteos。在 Huawei LiteOS 端可使用 open/read/write/lseek/close 等系统调用,也可使用 fopen/fread/fwrite/fclose 等标准 I/O 库访问/liteos 目录。具体的使用如下:

4.1 sharefs的使用:

将 Huawei LiteOS 需要访问的文件放在 Linux 端 Sharefs 指定目录,Huawei LiteOS 即可访问其需要的文件。Sharefs 使用步骤如下:

步骤1. Sharefs 在目录 osdrv/ components/sharefs/sharefs 下,在其目录执行./build.sh 编译出Linux 端使用的库(sharefs/out/linux/ liblinux_sharefs.a)和 APP(sharefs/out/linux/sharefs),Huawei LiteOS 端使用的库(sharefs/out/liteos/ libsharefs.a)。(此步骤已通过顶层 SDK 编译执行完成,可不做)

步骤2. Huawei LiteOS/Linux 使用方法

Huawei LiteOS 端使用方法:sharefs/include/sharefs_client.h 为其使用 Sharefs 用到的头文件。首先执行 IPCM 初始化,调用 _ipcm_vdd_init();再调用HI_ShareFs_Client_Init("/liteos");

完成初始化,其传参"/liteos"为 Sharefs 指定访问的文件目录,在 Linux 端需要有一个与其同名的目录。用户可自行指定 Sharefs 访问目录。可使用 HI_ShareFs_Client_Check()接口查看 Sharefs 是否建立连接。返回 true 表示建立连接。方可执行文件访问。可使用 HI_ShareFs_Client_Get_Path()接口获得 Sharefs 指定访问的目录。此目录实际存在于 Linux 端文件系统中。

Linux 端使用方法:首先加载 IPCM 模块,在单板根文件系统下执行/komod/ipcm 或insmod /komod/hi_ipcm.ko;如果采用 APP 执行:sharefs &,如果采用库,则在用户APP 中调用 HI_ShareFs_Server_Init()。

Sharefsは、他のユーザーモードのプログラムとCPUリソースの競合するLinuxのエンドユーザーモードアプリケーションで使用されています。LinuxのエンドCPU使用率が高すぎる場合(大80%)、APP効率Sharefsは、Huawei社LiteOS末端Linuxファイルアクセス効率Sharefs低下を引き起こし、影響される、長い訪問を増加させます。この時点でSharefsプロセスの優先度のプリエンプティブCPUリソースを改善する必要性、命令:素敵な--19 sharefs&。Sharefsライブラリを使用する場合は、APPの優先順位は、そのライブラリの使用を改善する必要があります。

おすすめ

転載: www.cnblogs.com/linhaostudy/p/11095342.html