《Qualcomm平台android开发总结要点.pdf》由会员分享,可在线阅读,更多相关《Qualcomm平台android开发总结要点.pdf(296页珍藏版)》请在三一文库上搜索。
1、1、 高通平台 android 开发总结 . 7 1.1 搭建高通平台环境开发环境. 7 1.2 搭建高通平台环境开发环境. 7 1.2.1 高通 android 智能平台概述 . 7 1.2.1.1 什么是 L4,REX,BREW,AMSS以及相互之间的关系 . 7 1.2.2 选择合适的源代码以及工具. 8 1.2.2.1 获取经过高通打补丁的android 源代码 . 8 1.2.2.2 获取高通针对不同处理器的vendor 源代码 . 9 1.2.2.3 获取 modem 源代码 . 9 1.2.2.3.1 高通 modem 源代码编译前的修正 . 13 1.2.3 建立 Androi
2、d 开发环境 . 14 1.2.4 建立 modem 开发环境 . 15 1.2.4.1 补充. 16 1.2.4.1.1 获取 licenses 16 1.2.4.1.2 Flex 简单使用指南 . 16 1.2.4.1.3 启动 license 服务器 . 18 1.2.4.1.4 license 没有办法从服务器获取的几种情况. 18 1.2.4.1.5 破解 rvds 的 license 19 1.2.5 在高通开发板上烧录文件系统. 19 1.3 高通平台, android 和 modem 编译流程分析 . 21 1.3.1 android代码编译流程分析 . 21 1.3.1.1
3、编译工具检测 . 22 1.3.1.1.1 22 1.3.1.2 appsboot.mbn 生成过程解析 . 22 1.3.1.3 boot.img 生成过程解析,怎样手动生成 boog.img 28 1.3.1.4 编译过程存在的问题 . 32 1.3.1.4.1 prelinkmap 的时候 base 0xaff00000 out of range 32 1.3.1.4.2 LOCAL_SDK_VERSION 使应用程序不能访问hide 的 api 32 1.3.1.4.3 armv5te-vfp 导致一些游戏运行不了 . 32 1.3.2 分布式编译 android 代码. 33 1.3
4、.3 modem 代码编译流程分析 . 33 1.3.3.1 单独编译某个模块(如: qcsbl oemsbl ). 34 1.3.3.2 $(TARGETDIR)/exist 规则解析 . 36 1.3.3.3 setup规则解析 . 36 1.3.3.3.1 corebsp_create_incpaths 36 1.3.3.3.2 create_incpaths 36 1.3.3.3.3 amsssetup 36 1.3.3.3.4 amsslinkaddress 36 1.3.3.3.5 firmware 38 1.3.3.4 deps规则解析 . 38 1.3.3.5 corebsp_
5、build规则解析 . 38 1.3.3.5.1 corebsp_build_action 38 1.3.3.5.1.1 corebsp_scons 规则. 39 1.3.3.5.1.1.1 corebsp_scons_start 39 2.3.3.5.1.1.1 corebsp_scons_action 39 1.3.3.5.1.1.2.1 命令 pboot_gen_elf image_header pboot_add_hash 解析. 40 1.3.3.5.1.1.2.2 env.BinBuilder 过程解析 . 41 1.3.3.5.1.1.2.3 env.MbnBuilder 过程解
6、析 . 41 1.3.3.5.1.1.2.4 env.MbnDummyBuilder 过程解析 . 42 1.3.3.5.1.1.2.5 fsbl.mbn 生成过程解析 . 43 1.3.3.5.1.1.2.6 dbl.mbn 生成过程解析 . 43 1.3.3.5.1.1.2.7 AMSS_AABBQOLYM.mbn 生成过程解析 . 43 1.3.3.5.1.1.2.8 adsp.mbn 生成过程解析 . 43 1.3.3.5.1.1.2.9 osbl.mbn 生成过程解析 . 44 1.3.3.5.1.1.2.10 enandprg_AABBQOLYM.mbn 生成过程解析 . 44 1
7、.3.3.5.1.1.2.11 nandprg_AABBQOLYM.mbn 生成过程解析 . 45 1.3.3.5.1.1.2.12 emmcbld.mbn 生成过程解析 . 45 3.3.3.5.1.1.1 corebsp_scons_done 46 1.3.3.5.1.2 corebsp 46 1.3.3.5.2 corebsp_create_incpaths 46 1.3.3.5.3 corebsp_setup 46 1.3.3.6 libs 46 1.3.3.7 copybar规则解析 . 47 1.3.3.8 exe规则解析 . 47 1.3.3.8.1 CORELIBS_AABBQ
8、OLYM.mbn生成过程解析 . 47 1.3.3.8.2 amss.mbn 生成过程解析 . 47 1.3.3.9 bldprod规则解析 . 48 1.3.3.10 create_mem_feat_html规则解析 . 48 1.3.3.10.1 50 1.3.3.11 partition规则解析 . 50 1.3.3.11.1 eMCC 启动和 NAND 启动的分区格式是不一样的,如果是 eMCC 启 动,多了编译选项: . 50 1.4 高通平台 7630 启动流程分析 . 52 1.4.1 启动流程概述 . 52 1.4.2 pbl 流程. 52 1.4.3 dbl 流程. 52 1
9、.4.4 osbl 流程. 54 1.4.4.1 osbl 装载 appsbl 过程分析 . 56 1.4.5 appsbl 流程(源代码在 android中). 56 1.4.5.1 aboot_init 过程分析(需要侧重关心的部分). 58 1.4.5.1.1 fastboot 模式分析 . 61 1.4.5.1.1.1 什么是 fastboot 模式. 61 1.4.5.1.1.2 fastboot 模式与 recovery 模式的区别 . 61 1.4.5.1.1.3 怎样进入 fastboot 模式. 62 1.4.5.1.1.4 android 系统手机刷机过程分析 (补充知识
10、) 62 1.4.5.1.2 appsbl 引导 android 系统. 63 1.4.5.1.2.1 Android 系统启动过程中存在的问题. 67 1.4.5.1.1.1.1 linker 问题导致系统无法启动 . 67 1.4.6 AMSS 流程. 69 1.5 android 系统重启关机流程分析 . 82 1.5.1 c语言中调用 reboot 函数. 82 1.5.2 通过 adb 让系统重启 . 82 1.5.3 fastboot 模式下系统重启 . 83 1.5.4 系统关机 . 84 1.5.5 内核中的系统调用 reboot 85 1.6 软件调用流程分析 . 89 1.
11、6.1 设置 sim 卡状态. 89 1.6.2 设置背光 . 90 1.6.3 获取电池信息 . 90 1.7 python scons 语法学习 . 94 1.8 python 语法学习 . 94 1.8.1 Python中文全攻略 . 94 1.8.2 推荐一款 Python 编辑器 . 94 1.8.3 使用 pyExcelerator 读 Execl 文件. 94 1.8.4 xlrd 解析 xls 文件. 95 1.8.5 xlrd 生成 xls 文件. 95 1.9 Python 语言之 scons 工具流程分析 . 95 1.9.1 Program 方法. 100 1.9.2
12、Library 方法. 100 2、 高通常用工具使用 . 101 2.1 QPST 101 2.2 QXDM 101 2.3 QCAT 101 3、 工程模式 . 101 4、 Android 系统更新升级总结 . 104 4.1 刷机基本知识 . 104 4.1.1 各品牌代表手机刷机模式进入方法. 104 4.1.1.1 HTC G1 104 4.1.1.2 三星 Galaxy i7500 104 4.1.1.3 Google Nexus One 105 4.1.2 fastboot 模式. 105 4.1.2.1 fastboot 模式概述 . 105 4.1.2.2 PC端 fast
13、boot 命令分析 . 106 4.1.2.2.1 命令选项w s -p c 106 4.1.2.3 手机端 fastboot 命令分析 . 107 4.1.2.3.1 boot 107 4.1.2.3.2 erase 107 4.1.2.3.3 flash 107 4.1.2.3.4 continue 107 4.1.2.3.5 reboot 107 4.1.2.3.6 reboot-bootloader 107 4.1.2.3.7 getvar 107 4.1.2.3.8 download 108 4.1.2.3.9 update 108 4.1.2.3.9.1 system/core/f
14、astboot/fastboot.c:294: 108 4.1.2.3.9.2 fprintf(stderr, “archive does not contain %sn“, name); 108 4.1.2.4 fastboot 模式流程分析 . 108 4.1.3 recovery 模式. 108 4.1.3.1 recovery 模式概述 . 108 4.1.3.2 软件升级包 . 109 4.1.3.3 recovery v1跟 recovery v2的区别 . 109 4.1.3.4 软件升级脚本语法解析 . 109 4.1.3.4.1.1 mount 110 4.1.3.4.1.2
15、 getprop 111 4.1.3.4.1.3 file_getprop 111 4.1.3.4.1.4 assert 111 4.1.3.4.1.5 format 111 4.1.3.4.1.6 apply_patch_check 111 4.1.3.4.1.7 apply_patch_space 111 4.1.3.4.1.8 apply_patch 111 4.1.3.4.1.9 package_extract_file 112 4.1.3.4.1.10 ui_print 112 4.1.3.4.1.11 META-INF/com/google/android/update-scrip
16、t 脚本分析 . 112 4.1.3.4.2 Recovery 模式中 install_package 函数解析 . 117 4.1.3.5 Recovery 流程分析 . 118 4.1.3.5.1 恢复出厂设置 . 118 4.1.3.5.2 系统更新流程 . 119 4.1.3.5.3 通过 sd 卡实现刷机 . 121 4.1.3.6 系统升级包案例分析 . 122 4.1.4 工程模式 (HBoot) 模式. 122 4.1.4.1 HBOOT 降级方法 . 122 4.2 如何制作升级包 update.zip 123 4.2.1 手动制作升级包 . 123 4.2.2 自动制作升级
17、包 . 123 4.3 Android 签名机制 . 125 4.4 android 文件系统权限概述 . 125 4.4.1 获取手机 root 权限. 127 4.4.2 adb默认权限分析 . 128 4.4.3 adb root命令切换到 root 权限. 129 4.4.4 挂载系统分区为读写 (remount) 130 4.4.5 通过修改 boot.img 获取 Nexus One 权限. 132 4.5 系统应用移植 . 132 4.5.1 Android 2.2在线升级的移植 . 132 4.5.2 解决 donut Gtalk 、Market 登录不了的问题 . 133 4
18、.5.3 apk反编译问题总结 . 133 4.5.4 系统重启 . 133 5、 高通 linux内核驱动开发 . 133 5.1 添加串口调试 . 133 5.2 Sensor 传感器. 133 5.3 USB 枚举 USB Composition 134 5.4 USB 枚举 USB Composition 136 6、 从 android 源代码制作 sdk 136 6.1 linux sdk 137 6.2 windows sdk 137 7、 程序安装与调试 . 138 8、 android 框架流程分析 . 138 8.1 屏幕显示相关 . 138 8.1.1 屏幕分辨率 . 1
19、38 8.1.2 屏幕模式 . 139 8.2 Android 开机充电 . 141 8.3 Android 开机动画 . 141 8.3.1 内核开机画面 . 141 8.3.2 文件系统开机画面 . 141 8.3.2.1 开机显示的 ANDROID 文字. 141 8.3.2.2 ANDROID 发光动画 . 142 8.3.2.3 initlogo.rle 文件分析 . 143 8.3.2.4 bootanimation.zip 文件分析 . 143 8.3.3 三星 I9000 开机动画 . 144 8.4 JNI调用流程 . 145 8.5 Android 开机铃声 . 145 8
20、.6 GPS 导航. 145 8.6.1 GPS 导航原理 . 145 8.6.2 GPS 导航软件 . 145 9、 高通 modem 框架流程分析 . 146 9.1.1 添加自定义 rpc 调用. 146 9.1.1.1 从 AP端获取 modem 的系统分区信息 . 146 9.1.2 添加自定义 AT 命令. 146 10、 linux 应用. 146 10.1 嵌入式 Linux 通过帧缓存截图 - Framebuffer Screenshot in Embedded Linux 146 10.2 Linux下右键烧录文件 . 147 10.3 Linux下右键 svn 147 1
21、、高通平台 android 开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录 文件系统 建立高通平台开发环境 高通平台, android 和 modem 编译流程分析 高通平台7620 启动流程分析 qcril 流程分析,设置 sim 卡锁 python scons 语法学习 Python 语言之 scons 工具流程分析: 1.2 搭建高通平台环境开发环境 高通 android 智能平台概述 选择合适的源代码以及工具 建立 Android 开发环境(部分略) 建立 modem 开发环境 1.2.1 高通 android 智能平台概述 高通 7230 android 智能手机解决
22、方案的软件包括两个部分 1. 以 linux 操作系统为基础的 android 系统 2. 以 L4 ,REX为基础的 Modem 部分 在高通 7 系列的架构中,一个IC 内部集成有两个 ARM 处理器,一个 ARM9 (或者 arm11),专门负责处理通信协议,射频以及GPIO等,软件架构 采用 AMSS , 另 外一个是 ARM11 ,用来处理多媒体,上层应用,以及其他的一些任务,运行的系 统是 android 系统,这两个处理器之间通过共享内存的硬件方式 来进行通信。 1.2.1.1 什么是 L4,REX,BREW,AMSS以及相互之间的关系 L4 是一组计算机程序,是最初由Joche
23、n Liedtke设计的 微内核构架的操作系统 内核,现在已经形成一个微内核家族。L4这个微内核系统由于其出色的性能和 很小的体积而开始被计算机工业所认知,被移植到了许多不同的硬件构架上。 高通的 L4 提供了操作系统最基本的操作,是买别人的。 早期的操作系统绝大多数是Monolithic Kernel, 意思是整个操作系统 - 包括 Scheduling (调度 ), File system (文件系统 ), Networking (网络), Device driver (设备驱动程序 ), Memory management ( 存储管理 ), Paging(存储页面 管理) - 都在内核
24、中完成 . 一直到现在广泛应用的操作系统, 如 UNIX,Linux, 和 Windows还大都是 monolithic kernel操作系统 . 但随着操作系统变得越来越复 杂(现代操作系统的内核有一两百万行C程序是很常见的事情 ), 把所有这些功能 都放在内核中使设计难度迅速增加 . 微内核是一个与 Monolithic Kernel相反的设计理念 . 它的目的是使内核缩到最 小, 把所有可能的功能模块移出内核. 理想情况下 , 内核中仅留下 Address Space Support( 地址空间支持 ),IPC (Inter-Process Communication,进程间通讯 ),
25、和 Scheduling( 调度), 其他功能模块做为用户进程运行。 REX 是在 L4 之上封装的服务 ,是一个 抢占式,多任务的RTOS ,所有的任务都 以 task 的形式存在, REX 提供包括 任务创建,同步,互斥,计时器,中断控制 等功能的 API ,这里的 task 实际上就是我们的线程,每个 task 对应着一个线 程。REX 维护一个 task list(双向链表 ) ,始终运行高优先级的task 。products 里面所有的服务包括 3g 协议栈等都是以task 的形式跑在 rex 之上的 。 而 Brew的话是运行的环境 ,跟 Java 有点儿类似, 相当于是一个虚拟机
26、 。 AMSS 高级的移动用户软件 ( Advanced Mobile Subscriber Software) 技术, 是一种新的软件架构,是对原来软件架构DMSS的升级。 AMSS源代码实际上是 QC BREW(Binary Runtime Environment For Wireless)平台的的底层部分,去掉 了为应用程序提供接口的AEE (application execution environment)部分,高 通在 Dual Proc 芯片上的其他平台基本上都是采用的这样的架构。 参考文档: 微内核操作系统及L4 概述 http:/ MSM 平台上的 AMSS http:/ 1
27、.2.2 选择合适的源代码以及工具 要编译出可供烧写使用的镜像文件需要三部分代码: 1) 获取经过高通打补丁的android 源代码 2) 获取高通针对不同处理器的vendor 源代码 3) 获取 modem 源代码 1.2.2.1 获取经过高通打补丁的android 源代码 网址: https:/www.codeaurora.org/wiki/QAEP#Branch_Releases https:/www.codeaurora.org/xwiki/bin/QAEP/eclair https:/www.codeaurora.org/xwiki/bin/QAEP/eclair_caramel h
28、ttps:/www.codeaurora.org/xwiki/bin/QAEP/froyo_almond 目前使用的 android 分支: Android 2.1 版本 eclair M7630AABBQMLZA1150 msm7630 eclair M7630AABBQMLZA1150.xml 2010年 02 月 01 日 M7630AABBQMLZA1200 msm7630 eclair M7630AABBQMLZA1200.xml 2010年 03 月 30 日 M7630AABBQMLZA2010 msm7630 clair M7630AABBQMLZA2010.xml July
29、02, 2010 M7630AABBQMLZA1240 msm7630 eclair_caramel M7630AABBQMLZA1240.xml 2010年 05 月 31 日 M7630AABBQMLZA1250 msm7630 eclair_caramel M7630AABBQMLZA1250.xml 2010年 06 月 15 日 M7630AABBQMLZA1280 msm7630 eclair_caramel M7630AABBQMLZA1280.xml 2010年 08 月 03 日 M76XXTSNCJNLYA5340 msm7627 eclair_chocolate M76X
30、XTSNCJNLYA5340.xml 2010 年 06 月 04 Android 2.2 版本 froyo M7630AABBQMLZA2020 msm7630 froyo M7630AABBQMLZA2020.xml 2010 年 09 月 01 M76XXTSNCJNLYA6050 msm7627 froyo_almondM76XXTSNCJNLYA6050.xml 2010年 10 月 29 日 以下命令获取代码: https:/www.codeaurora.org/xwiki/bin/QAEP/froyo_almond ac_root=/home/shared/qualcomm ac
31、_root=/mnt/shared/qualcomm/ ac_date=20101105 ac_branch=froyo_almond build_id=M76XXTSNCJNLYA6050 ac_xml=M76XXTSNCJNLYA6050.xml mkdir -pv $ac_root/$ac_branch-$build_id-$ac_date cd $ac_root/$ac_branch-$build_id-$ac_date repo init -u git:/codeaurora.org/platform/manifest.git -b $ac_branch -m $ ac_xml no
32、hup repo sync then PERL=which /usr/bin/perl sed -i “s/(from/g“ $incpathsxxx_py fi ./AMSS/products/7x30/multimedia/audio/drivers/Adie/AdieCodecDb/src/DA LAdieCodecDb.c #DalAdieCodecDbInternal.h 改为: #include “DALAdieCodecDbInternal.h“ 5) 如果出现 make: execvp: /platform/cs/bin/cifc: Permission denied 错误,执
33、行以下命令: chmod -R 755 AMSS/platform/cs/bin/* 1.2.3 建立 Android 开发环境 (略) curl http:/android.git.kernel.org/repo /bin/repo chmod a+x /bin/repo export PATH=/bin:$PATH 1) 安装基本软件 sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g+-multilib l
34、ibc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev 2) 安装 sun-java5-jdk ubuntu 下通过命令 : sudo apt-get install sun-java5-jdk 将会安装下面的包 sun-java5-bin sun-java5-demo sun-java5-jdk sun-java5-jre sun-java5-plugin 如果 ubuntu 发布版本中没有 sun-java5-jdk 那么 sudo vim /e
35、tc/apt/source.list #for sun-java5-jdk deb http:/ jaunty multiverse deb http:/ jaunty-updates multiverse sudo apt-get update sudo apt-get sun-java5-jdk 或者,如果 ubuntu 版中不支持 apt-get ,那么用手动安装: sudo mount -t nfs 172.20.127.15:/home/shared /mnt sudo dpkg -i /mnt/tools/debs/java-1.5.0-sun/sun-java5-* 3) 配置
36、usb cd /etc/udev/rules.d/ sudo vi 50-android.rules # adb single interface device SUBSYSTEM=“usb_device“, SYSFSidVendor=“18d1“, SYSFSidProduct=“d00d“, MODE=“0664“, GROUP=“plugdev“ # adb composite interface device SUBSYSTEM=“usb_device“, SYSFSidVendor=“18d1“, SYSFSidProduct=“deed“, MODE=“0664“, GROUP=
37、“plugdev“ # Sooner low-level bootloader BUS=“usb“, SYSFSidVendor=“0bb4“, SYSFSidProduct=“0a51“, MODE=“0664“,GROUP=“plugdev“ sudo /etc/init.d/udev restart 1.2.4 建立 modem 开发环境 与 android 源代码不同, modem 编译工具使用的是RVDS , 实际上只用到其中的 RVCT编译器, 高通不提供该工具, 我们必须从 arm公司获取相应的授权, RVDS 是 ADS 的升级版本,从 ADS 1.2 开始到 RVDS 3.1
38、 我们公司都有其授权,按照 高通的要求我们目前必须使用RVDS 2.2 并且使用他的349 patch 。 RVDS 2.2 安装以及使用步骤如下: 1). RVDS 2.2 共享在 172.20.127.15:/home/shared/ 目录 sudo mount -t nfs 172.20.127.15:/home/shared/ /mnt cd /mnt/qualcommon/RVDS-2.2/ linux下 rvds2.2 的安装程序为: ./rvds2.2_linux-pentium/setuplinux.bin 执行以上命令,按照默认步骤安装,安装路径为:/ARM 注意事项: 安装
39、过程如果出现错误: java.lang.UnsatisfiedLinkError: /tmp/ismp001/6073753.tmp: libstdc+-libc6.2-2.so.3: cannot open shared object file: No such file or directory 从网上下载 libstdc+-libc6.2-2.so.3拷贝到 /usr/lib 目录 , 或者从下面 地址获取: http:/172.20.127.15/repositories/DocsAndTools/Tools/Qualcomm/RVDS-2. 2-patch/patch/libstdc
40、+-libc6.2-2.so.3 工具的安装通过脚本进行了简化,具体过程请参考文档: 80-N0216-2_A_M7630AABBQMAZM1170.pdf 80-VR881-7_B_M7630AABBQMLZA1200.pdf 80-VR192-1_C_AMSS_Linux_Software_Users_Guide.pdf 80-VR192-1_D_AMSS_Linux_Software_Users_Guide.pdf 2) 安装高通指定的 593 patch cd /mnt/qualcommon/RVDS2.2/ 下执行命令: ./setup-patch-rvct2.2-bin593-li
41、b349.sh 目前版本只支持 32 位的系统 1.2.4.1 补充 vim ./AMSS/products/7x30/core/bsp/build/scripts/defaults.py 定义了工 作线程 #num_jobs = num_cpu * 2 modified by mhf num_jobs = 2 if num_jobs 8: num_jobs = 8 env.SetOption(num_jobs, num_jobs) 获取 RVDS 官方网站下载评估版本 https:/ http:/ https:/ https:/ (Licensing 需要通过 host id 注册) 1.2
42、.4.1.1 获取 licenses RVDS 的 licenses 从其官方网站获取 https:/ https:/ http:/ 入口 https:/ 合法用户登录 用户名 : 密码: Mohuifu7737 入口 https:/ 输入产品的序列号 然后按照步骤一步步操作即可 Server Host Id Type 类型选择 ETHERNET Server Host Id 填写需要绑定主机的MAC 地址 00:1a:64:0a:ba:70 最后保存 license.dat 文件,文本格式。 1.2.4.1.2 Flex 简单使用指南 FLEXlm是应用广泛的 License 管理工具,它
43、以使软件License 能够在网上浮动 而出名。浮动的 License 有利于软件的使用和对 License 的管理,这使得用户 能够高效地使用有效的许可, 并使管理者能够控制允许使用它的节点。由于有大 约 1500 厂商使用 FLEXle 管理 lICENSE, 所以 CAD系统管理人员极有可能要同时 安装和管理来自不同厂商的License 或同一厂商多个产品的License 文件。 可采 取以下方法避免产生冲突: (1) 用一个服务器运行一个Lmgrd(License 文件的后台管理程序 ) 和多个 License 文件; (2) 用一个服务器运行多个Lmgrd和 License 文件;
44、(3) 运用多个服务器节点,每个服务器运行单独的Lmgrd和 License 文件。 第一种选择主要造用于高版本的Lmgrd,V6之前和 FLEXlm ,每个 Lmgrd只能 管理一个 License 文件; 第二种选择,将使用一台服务器,但需要运行多个Lmgrd;第三种选择,必须 使用多个 License 服务器。 一、服务器端设定 1.License文件的设定 在使用 FLEXlm进行管理的 License 文件中一般有 SERVER 行,它通过 SERVER 行的 hostname 和 hostID 定义 License 服务器。 SERVER this_host 0050BB0F402
45、 27000 hostname hostID post 2. 服务方式的选择 (1) 一个服务器运行一个Lmgrd和多个 License 文件如果多个 License 文件具 有相同的 hostID, 则可以通过修改hostname进行合 并。合并时,首先将多个 License 文件加到一个文件中, 然后修改 SERVER 行,并且只保留一个 SERVER 行。 对于 Windows NT操作系统, 应在各 License 的默认位置保存一个合并后的备份, 这样每个软件将在其默认位置找到License 信息,从而避免了对 LM_LICENSE_FILE 的设定; 对于 UNIX操作系统, 可以
46、建立一个默认位置到License 存放位置和 Link 。合并后的 License 文件, 就可以使用同一个Lmgrd。 (2) 一个服务器运行一个Lmgrd和一个别 License 文件如果 HostID 不一样, 则这些 License 服务只能运行于不同的服务器节点上,并且License 不能合并。 可以选择使用一个服务器运行一个Lmgrd和 License 文件。 (3) 一个服务器运行多个Lmgrd和 License 文件如果多个 License 未进行合 并,可以通过在同一台机器上启动多个Lmgrd,每个 Lmgrd 管理一个 License 文 件。使用多个 Lmgrd管理多个
47、License 文件对服务器的性能并没有明显影响。如 果 License 是由不同版本的 FLEXlm产生的,一般是新版本可以管理旧版本的 License 文件。所以应使用最新的Lmgrd和 Vendor daemon。另外,当用一个服 务器的多个 Lmgrd管理多个 License 文件时,应该注意任何二个License 文件的 post 都不能一样,并且对于每个 License 而言,应选用合造的Lmgrd。 二、客户端设定 当使用客户端应用程序时(a Licensedapplication),可以通过在系统的环境 变量中设定 LM_LICENSE_FILE, 使 Application能够指向不同服务器上的 License 文件。如果要使a Licensed application使用不同服务器都有单独的 一个 License 文件), 客户端应将需要用到的License 文件拷贝到本机目录下, 并 指定 LM_LICENSE_FILE 环境变量。 UNIX: %setenv LM_LICENSE_FILE lfpath1 : lfpath2 : : lfpathN Windows: lfpath1 ;lfpath2: ;lfpathN LfpathN 为第 N个 License 的路径; UNIX下路径间用 “:
链接地址:https://www.31doc.com/p-5197977.html