在训练简单的CCN进行模型选择时,出现name ‘device’ is not defined
发现是没有定义device,因此查看了以下model = model.to(device)这行代码的意义,
https://blog.csdn.net/weixin_36670529/article/details/104367696博客中描述的很详细**,是说将模型加载到指定设备上**。
其中,
device=torch.device(“cpu”)代表的使用cpu,而device=torch.device(“cuda”)则代表的使用GPU
。
由于我是在服务器上跑的,用的时GPU,所以在代码前加了一行代码:
device=torch.device(“cuda”)
错误改好。
device = torch.device(“cuda”)
model = model.to(device)
在训练简单的CCN进行模型选择时,出现name ‘device’ is not defined发现是没有定义device,因此查看了以下model = model.to(device)这行代码的意义,https://blog.csdn.net/weixin_36670529/article/details/104367696博客中描述的很详细**,是说将模型加载到指定设备上**。其中,device=torch.device(“cpu”)代表的使用cpu,而device=torch.device(“cu
================================================================================
This document contains the following sections:
1. Introduction
2. New Features
3. Supported
Device
s
4. Resolved Issues
5. Known Issues
6. Technical Support
7. Other Information (optional)
8. Core Release History
9. Legal Disclaimer
================================================================================
1. INTRODUCTION
For the most recent updates to the IP installation instructions for this
core, please go to:
http://www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm
For system requirements:
http://www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm
This file contains release notes for the Xilinx LogiCORE IP Serial RapidIO v5.5
solution. For the latest core updates, see the product page at:
http://www.xilinx.com/rapidio/
2. NEW FEATURES
- ISE 12.1 software support
- Designed to RapidIO Interconnect Specification v2.1
- Virtex-6 LXT/HXT/SXT 5.0 Gbps support
- Spartan-6 3.125 Gbps and 4x support
- Expanded simulator support
- Support for ML505, ML605 and SP605 boards (see Release Notes AR for details)
3. SUPPORTED
DEVICE
S
- Virtex-6 LXT/HXT/SXT/CXT
- Spartan-6 LXT
- Virtex-5 LXT/FXT/SXT
- Virtex-4 FX
4. RESOLVED ISSUES
- PHY does not properly pass CRF bit to Buffer
- Version fixed : v5.5
- CR# 519603 - Updated PHY to properly pass CRF
- GT settings for Spartan-6 and Virtex-6 updated based on characterization
- Version fixed : v5.5
- PORT_INITIALIZED toggles indefinitely
- Version fixed : v5.5
- CR# 551271 - GT wrappers updated so that the core will detect invalid
data until RESETDONE asserts.
- Processing Element Features CAR implemented incorrectly
- Version fixed : v5.5
- CR# 528369 - Part of the PEF CAR was implemented in the PHY
configuration space, now it is merged into the LOGIO configuration
space as directed by the spec. See core User Guide for map of
configuration space.
- Recommended modifications to Example Design reset scheme
- Version fixed : v5.5
- CR# 533208, 533209, 533212 - Updated reset sequence, see AR# 33574 for
specifics.
- Example design "implement.bat" file has error
- Version fixed : v5.5
- CR# 533796 - Corrected syntax for NGDBuild command.
- Virtex-6 clock modules not using production MMCM settings
- Version fixed : v5.4rev1
- CR#546021 - Using outdated values from the clocking wizard in clock
modules.
- Buffer BRAM using READ_FIRST mode
- Version fixed : v5.4rev1
- CR#546424 - Using READ_FIRST mode for buffer BRAMs - need to update to
WRITE_FIRST mode for Spartan-6 and Virtex-6 based on characterization.
- VHDL example design simulation error when CRF bit de-selected
- Version fixed : v5.4rev1
- CR# 532020 - Updated example design so that CRF signals not added
when CRF support is disabled.
- Virtex-6 bring-up issues
- Version fixed : v5.4
- CR#527725, CR#525309, CR#531695 - Using integer values for the MMCM_ADV,
regenerated Virtex-6 wrappers based on general hardware characterization
results, revised reset sequence. Please see core Release Notes
for updates.
- GUI settings incorrect or not properly reflected in hardware.
- Version fixed : v5.4
- CR#507334, CR#528369, CR#528370 / AR#32122 - The following register
fields were corrected: Re-transmit Suppression mask, Logical Layer
extended features pointer,
Device
VendorID.
- Latches inferred in VHDL example design
- Version fixed: v5.2
- CR#509670 / AR#32189 - Added intermediate values for partial
register and combinational assignments.
- lnk_trdy_n does not assert in evaluation core simulations
- Version fixed : v5.1rev1
- CR#493479 / AR#31864 - Modified initial state in evaluation cores.
- PHY won't generate stand-alone due to missing module
- Version fixed : v5.1rev1
- CR#493162 / AR#31834 - Shared file between buffer and log added to
buffer file list.
- Virtex-4 core has long initialization time
- Version fixed : v5.1rev1
- CR#481684 / AR#31617 - Virtex-4 initSM modified to prevent branch to
silent when RX PCS resets in DISCOVERY state.
- LogIO local arbitration doesn't account for valid causing re-arbitration
prior to legitimatepacket completion.
- Version fixed : v5.1
- CR#478748 - Valid used to gate mresp_eof_n and iresp_eof_n for local
arbitration.
- A ireq_dsc_n asserted for an un
defined
packet type does not get propogated
by the logical layer.
- Version fixed : v5.1
- CR#478541 - un
defined
packet type decode now passes dsc to buffer
allowing packet to be dropped.
- 16-bit
device
ID cores may see a maintenance response transaction presented
but not validated on the IResp interface resulting in a lost transaction.
by the logical layer.
- Version fixed : v5.1
- CR#474894 - Fixed issue when the maintenance response is followed
immediatly by a single DWord SWrite packet.
- SourceID not configureable for IReq port.
- Version fixed : v5.1
- CR#473938 - Added ireq_src_id port to logical layer. All transmit source
IDs should now be configureable and all received destination IDs
observable.
- Write enables into LogIO registers aren't allowing partial register writes.
- Version fixed : v5.1
- CR#473441 - Write enables now implementedfor all LogIO registers allowing
byte-wise writes of CSRs such as the
device
ID register and BAR.
- Message response transaction received as a user
defined
packet type using
16-bit
device
IDs appears as a corrupted packet on the IResp interface.
- Version fixed : v5.1
- CR#473400, CR#473693 - Fixed LogIO RX to properly handle all
user-
defined
types.
- PHY core does not dsc upon retry when coincident with TX packet eof
resulting in potential buffer lock-up
- Version fixed : v4.4rev2
- CR#478246 / AR#31407 - lnk_tdst_dsc_n now asserted for all retry and
error scenarios.
- Retry of packet being sent causes packet to get stuck in buffer
- Version fixed : v4.4rev2
- CR#477217 / AR#31318 - No longer applicable, v5.1 introduces new buffer.
- Core accepts muddled packet when reinitializing during packet receipt
- Version fixed : v4.4rev1
- CR#477115 / AR#31308 - Core PNAs packet in receipt when link goes down.
- Core LCSBA implementation removes 64MB of possible addressing space.
- Version fixed : v4.4
- CR#472992 / AR#30939 - Use 10-bit mask with full 34-bit address for
LCSBA intercept.
- CRC error on stalled packet
- Version fixed : v4.4
- CR#469678 / AR#30940 - Fixed condition which loaded in new CRC sequence
on a stall just after sof received by PHY. This is a non-concern for
Xilinx buffer users.
- Virtex-4 4x core may intermittenly train down to 1x mode
- Version fixed : v4.4
- CR#467616 / AR#30314 - Modified oplm_pcs_rst_sequence.v file supplied
with the core to register asynchronous TXLOCK and RXLOCK signals.
- Re-initialization not forced following a change to Port Width Override
- Version fixed : v4.4
- CR#459427 / AR#30323 - Modified PHY Layer to detect a change in the
port width override field and reinitialize when updated.
- Messaging packets providing incorrect treq_byte_count value
- Version fixed : v4.4
- CR#467116 / AR#30320 - Modified Logical Layer to properly decode
Messaging size field. Modified testbench to properly check byte
count for messaging type packets.
- 8-bit SWrite transactions usign 16-bit
device
IDs suffer lost eofs
- Version fixed : v4.4
- CR#467668 / AR#30322 - Modified Logical Layer to properly forward
eof through the pipeline.
- Some Logical Layer CARs are not being set correctly in the core.
- Version fixed : v4.4
- CR#458414 / AR#30054 - The following Logical Layer CARs are not being
set correctly in the core:
- Assembly Information CAR (offset 0xC) - ExtendedFeaturesPtr portion
- Processing Element Features CAR (offset 0x10)
- Switch Port Information CAR (offset 0x14)
- Destination Operations CAR (offset 0x1C)
- Switch Route Table Destination ID Limit CAR (offset 0x34)
- Core does not have functionality to enable the user to drop unintended
packets based on
Device
ID.
- Version fixed: v4.3.
- CR#455552 - Added a new port called
device
id which indicates the
current
Device
ID value stored in the Base
Device
ID CSR.
- Receive side buffer design may corrupt packets - user may see corrupted
packets from the logical layer when many small packets cause the status
FIFO to fill.
- Version fixed: v4.2
- CR#447884 / AR#29263 - No longer applicable, v5.1 introduces new buffer.
- Repeated, transmitted packet accepted control symbols referencing the
same AckID cause loss of AckID sync - The user will see this as
potentially duplicated received packets which ultimately result in a port
error condition.
- Version fixed: v4.2
- CR#444561 / AR#29233 - Modified the transmit encoder to send a single
packet accepted symbol per back-to-back control symbol.
- Stomped packet sent after RFR (Restart-from-Retry)control symbol -
The user will occasionally see error recovery on a retry which will affect
system bandwidth.
- Version fixed: v4.2
- CR#435188 / AR#24837 - Modified the PHY interface to kill a packet if
discontinued on eof and prevent entry to the buffer.
5. KNOWN ISSUES
The following are known issues for v5.5 of this core at time of release:
- NGDBuild errors when using ISE GUI unless XST Keep Hierarchy set to Soft
- Version to be fixed : Fix Not Scheduled
- CR#534514 / AR#33528 - Please reference the Answer Record for additional
information and recommendations.
- Virtex-4 FX 3.125G, 4x core may not meet timing.
- Version to be fixed : Fix Not Scheduled
- CR#506364 / AR#32195 - Please reference the Answer Record for additional
information and recommendations.
- Unable to traindown to x1 mode in Lane 2.
- Version to be fixed : Fix Not Scheduled
- CR#457109 / AR#30023 - Traindown in Lane 0 works successfully but the
Serial RapidIO endpoint is unable to traindown to Lane 2. The RocketIO
transceivers only allow traindown to the channel bonding master.
- Core reinitialization during error recovery causes recoverable protocol
error.
- Version to be fixed : Fix Not Scheduled
- CR#457885 / AR#30021 - This is an corner condition that could occur if
core is forced to reinitialize (i.e. - force_reinit) while it is in the
process of error recovery. If this condition occurs, packets will be
sent during recovery's quiet period. This situation is recoverable.
- Post-Synplicity synthesis implementation runs may exhibit ucf failures
- Version to be fixed : Fix Not Scheduled
- CR#447782 / AR#29522 - Synplicity generated net names are not
consistent with XST generated names and may not be consistent between
core types. The .ucf file must be edited in these failure cases. Please
reference the Serial RapidIO v5.1 web Release Notes for suggested work
around.
- PNA cause field may occasionally reflect a reserved value
- Version to be fixed : Fix Not Scheduled
- CR#436767 / AR#24982 - The cause field is for debug purposes only
and will not affect functionality. Occurrence is rare and requires
alignment of multiple control symbols.
- Control Symbols may be lost on reinit
- Version to be fixed : Fix Not Scheduled
- CR#436768 / AR#24970 - This is an unusual and ultimately recoverable
error. Set the "Additional Link Request Before Fatal" value on the
Physical Configuration page of the GUI to "4" in order to prevent a
lost Link Request or Link Response from causing the core to enter
the port error state.
- Logical Rx does not support core side stalls
- Version to be fixed : Fix Not Scheduled
- CR#436770 / AR#24968 - The rx buffer must provide packets to the
logical layer without buffer induced stall cycles. The buffer
reference design provided with the core is a store and forward
buffer and complies with this rule.
The most recent information, including known issues, workarounds, and
resolutions for this version is provided in the IP Release Notes Guide
located at
www.xilinx.com/support/documentation/user_guides/xtp025.pdf
6. TECHNICAL SUPPORT
To obtain technical support, create a WebCase at www.xilinx.com/support.
Questions are routed to a team with expertise using this product.
Xilinx provides technical support for use of this product when used
according to the guidelines described in the core documentation, and
cannot guarantee timing, functionality, or support of this product for
designs that do not follow specified guidelines.
7. OTHER INFORMATION
- N/A
8. CORE RELEASE HISTORY
Date By Version Description
================================================================================
04/2010 Xilinx, Inc. 5.5 5.0 Gbps support
03/2010 Xilinx, Inc. 5.4 Revision 1 11.5 support/Patch Release
09/2009 Xilinx, Inc. 5.4 Spartan-6 support
06/2009 Xilinx, Inc. 5.3 Virtex-6 support
04/2009 Xilinx, Inc. 5.2 11.1i support
11/2008 Xilinx, Inc. 5.1 Revision 1 Patch Release
09/2008 Xilinx, Inc. 5.1 New Buffer LogiCore
07/2008 Xilinx, Inc. 4.4 Revision 2 Patch Release
07/2008 Xilinx, Inc. 4.4 Revision 1 Patch Release
06/2008 Xilinx, Inc. 4.4 Bug Fixes
03/2008 Xilinx, Inc. 4.3 10.1i support
10/2007 Xilinx, Inc. 4.2 9.2i support
02/2007 Xilinx, Inc. 4.1 9.1i support
02/2006 Xilinx, Inc. 3.1 Revision 1 Patch Release
01/2006 Xilinx, Inc. 3.1 8.1i support
================================================================================
9. Legal Disclaimer
This file contains confidential and proprietary information
of Xilinx, Inc. and is protected under U.S. and
international copyright and other intellectual property
laws.
DISCLAIMER
This disclaimer is not a license and does not grant any
rights to the materials distributed herewith. Except as
otherwise provided in a valid license issued to you by
Xilinx, and to the maximum extent permitted by applicable
law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
(2) Xilinx shall not be liable (whether in contract or tort,
including negligence, or under any other theory of
liability) for any loss or damage of any kind or nature
related to, arising under or in connection with these
materials, including for any direct, or any indirect,
special, incidental, or consequential loss or damage
(including loss of data, profits, goodwill, or any type of
loss or damage suffered as a result of any action brought
by a third party) even if such damage or loss was
reasonably foreseeable or Xilinx had been advised of the
possibility of the same.
CRITICAL APPLICATIONS
Xilinx products are not designed or intended to be fail-
safe, or for use in any application requiring fail-safe
performance, such as life-support or safety
device
s or
systems, Class III medical
device
s, nuclear facilities,
applications related to the deployment of airbags, or any
other applications that could lead to death, personal
injury, or severe property or environmental damage
(individually and collectively, "Critical
Applications"). Customer assumes the sole risk and
liability of any use of Xilinx products in Critical
Applications, subject only to applicable laws and
regulations governing limitations on product liability.
THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
PART OF THIS FILE AT ALL TIMES.
1、打开AP6212的BT,关闭rtl8723bs的BT:
[ 3.141273] Bluetooth: HCI UART driver ver 2.2
[ 3.146210] Bluetooth: HCI H4 protocol initialized
[ 3.151563] Bluetooth: HCI BCSP protocol initialized
[ 3.157154] usbcore: registered new interface driver btusb
[ 3.163282] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[ 3.169599] Bluetooth: BlueSleep Mode Driver Ver 1.1
[ 3.175402] Bluetooth: get rtl8723bs rtl8723bs_bt_host_wake gpio failed
[ 3.953017] Bluetooth: RFCOMM TTY layer initialized
[ 3.958456] Bluetooth: RFCOMM socket layer initialized
[ 3.964183] Bluetooth: RFCOMM ver 1.11
[ 3.968340] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 3.968734] [mmc]: mclk 0xf1c20090 0xc100000b
[ 3.989421] Bluetooth: BNEP filters: protocol multicast
[ 3.995242] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 4.001921] L2TP core driver, V2.0
[ 4.005706] PPPoL2TP kernel driver, V2.0
[ 4.010070] L2TP IP encapsulation support (L2TPv3)
[ 4.015468] L2TP netlink interface
[ 4.019264] L2TP ethernet pseudowire support (L2TPv3)
[ 4.023860] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing MMC-HS(SDR20) dt B
[ 4.023929] [mmc]: mclk 0xf1c20090 0xc100000b
[ 4.040272] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[ 4.048780] ThumbEE CPU extension supported.
[ 4.053550] Registering SWP/SWPB emulation handler
[ 4.059269] [rfkill]: rfkill set power 1
[ 4.063652] gpio ap6xxx_bt_regon set val 0, act val 0
正常启动的BT加载:
[ 3.207764] Bluetooth: HCI UART driver ver 2.2
[ 3.212725] Bluetooth: HCI H4 protocol initialized
[ 3.218045] Bluetooth: HCI BCSP protocol initialized
[ 3.223671] usbcore: registered new interface driver btusb
[ 3.229766] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[ 3.236243] Bluetooth: MSM Sleep Mode Driver Ver 1.2
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r$ ll
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config
Welcome to mkscript setup progress
All available chips:
0. sun8iw5p1
Choice: 0
All available platforms:
0. android
1. dragonboard
2. linux
Choice: 0
All available kernel:
0. linux-3.4
Choice: 0
All available boards:
0. evb
1. maple
2. redwood
3. y2
4. y3
Choice: 4
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4$ make ARCH=arm menuconfig
[*] Networking support --->
<*> Bluetooth subsystem support --->
Bluetooth
device
drivers --->
< > Broadcom Bluetooth Low Power Manager Support
<*> Realtek Bluesleep driver support
<*> Broadcom Bluetooth Low Power Manager Support
< > An inverter between bt hostwake pin and cpu (NEW)
< > Realtek Bluesleep driver support
2、(这个不修改:)
R:\wyb\ap6212a0_a33_sc3817r\android\
device
\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml
<!-- List of regexpressions describing the interface (if any) that represent tetherable
Wifi interfaces. If the
device
doesn't want to support tethering over Wifi this
should be empty. An example would be "softap.*" -->
<string-array translatable="false" name="config_tether_wifi_regexs">
<item>"wlan0"</item>
</string-array>
<!-- List of regexpressions describing the interface (if any) that represent tetherable
bluetooth interfaces. If the
device
doesn't want to support tethering over bluetooth this
should be empty. -->
<!-- default: disable Bluetooth PAN feature -->
<string-array translatable="false" name="config_tether_bluetooth_regexs">
<item>"bt-pan"</item>
</string-array>
R:\wyb\ap6212a0_a33_sc3817r\android\
device
\softwinner\astar-y3\astar_y3.mk
# ap6181/6210/6330 sdio wifi fw and nvram
#$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/
device
-bcm.mk)
#$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/
device
-bcm.mk)
$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6212/
device
-bcm.mk)
#$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/
device
-bcm.mk)
#rtl8723bs bt fw and config
#$(call inherit-product, hardware/realtek/bluetooth/rtl8723bs/firmware/rtlbtfw_cfg.mk)
# camera config for camera detector
#PRODUCT_COPY_FILES += \
#
device
/softwinner/astar-y3/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini
#add gms features
#PRODUCT_COPY_FILES += \
# frameworks/native/data/etc/android.hardware.faketouch.xml:system/etc/permissions/android.hardware.faketouch.xml \
# frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
# frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml
# 3G Data Card Packages
#PRODUCT_PACKAGES += \
# u3gmonitor \
# chat \
# rild \
# pppd
# 3G Data Card Configuration Flie
#PRODUCT_COPY_FILES += \
#
device
/softwinner/polaris-common/rild/ip-down:system/etc/ppp/ip-down \
#
device
/softwinner/polaris-common/rild/ip-up:system/etc/ppp/ip-up \
#
device
/softwinner/polaris-common/rild/3g_dongle.cfg:system/etc/3g_dongle.cfg \
#
device
/softwinner/polaris-common/rild/usb_modeswitch:system/bin/usb_modeswitch \
#
device
/softwinner/polaris-common/rild/call-pppd:system/xbin/call-pppd \
#
device
/softwinner/polaris-common/rild/usb_modeswitch.sh:system/xbin/usb_modeswitch.sh \
#
device
/softwinner/polaris-common/rild/apns-conf_sdk.xml:system/etc/apns-conf.xml \
#
device
/softwinner/polaris-common/rild/libsoftwinner-ril.so:system/lib/libsoftwinner-ril.so
#PRODUCT_COPY_FILES += \
#
device
/softwinner/polaris-common/rild/init.3gdongle.rc:root/init.sunxi.3gdongle.rc
# 3G Data Card usb modeswitch File
#PRODUCT_COPY_FILES += \
# $(call find-copy-subdir-files,*,
device
/softwinner/polaris-common/rild/usb_modeswitch.d,system/etc/usb_modeswitch.d)
PRODUCT_PROPERTY_OVERRIDES += \
ro.sw.embeded.telephony = false
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.timezone=Asia/Shanghai \
persist.sys.language=zh \
persist.sys.country=CN
PRODUCT_PACKAGES += Bluetooth
#PRODUCT_PROPERTY_OVERRIDES += \
# ro.product.8723b_bt.used=true
#GPS Feature
#PRODUCT_PACKAGES += gps.polaris
#BOARD_USES_GPS_TYPE := simulator
#PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml
# evb logger
PRODUCT_COPY_FILES += \
device
/softwinner/astar-y3/tools/logger.sh:system/bin/logger.sh
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.usb.config=mass_storage,adb \
ro.adb.secure=0
ro.udisk.lable=Polaris \
ro.font.scale=1.0 \
ro.hwa.force=false \
rw.logger=0 \
ro.sys.bootfast=true \
debug.hwc.showfps=0 \
debug.hwui.render_dirty_regions=false
#ro.sys.storage_type = emulated \
#for gms
#PRODUCT_PROPERTY_OVERRIDES += \
# ro.sys.mutedrm=true \
# ro.adb.secure=1
PRODUCT_PROPERTY_OVERRIDES += \
ro.sf.lcd_density=213 \
ro.product.firmware=v2.0
$(call inherit-product-if-exists,
device
/softwinner/astar-y3/modules/modules.mk)
DEVICE
_PACKAGE_OVERLAYS :=
device
/softwinner/astar-y3/overlay
PRODUCT_CHARACTERISTICS := tablet
# Overrides
PRODUCT_AAPT_CONFIG := xlarge hdpi xhdpi large
PRODUCT_AAPT_PREF_CONFIG := xhdpi
PRODUCT_BRAND := Allwinner
PRODUCT_NAME := astar_y3
PRODUCT_
DEVICE
:= astar-y3
PRODUCT_MODEL := QUAD-CORE A33 y3
PRODUCT_MANUFACTURER := softwinner
#include
device
/softwinner/polaris-common/prebuild/google/products/gms_base.mk
R:\wyb\ap6212a0_a33_sc3817r\android\
device
\softwinner\astar-y3\BoardConfig.mk
# wifi and bt configuration
# 1. Wifi Configuration
# 1.1 realtek wifi support
# 1.1 realtek wifi configuration
#BOARD_WIFI_VENDOR := realtek
ifeq ($(BOARD_WIFI_VENDOR), realtek)
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl
SW_BOARD_USR_WIFI := rtl8188eu
BOARD_WLAN_
DEVICE
:= rtl8188eu
#SW_BOARD_USR_WIFI := rtl8723au
#BOARD_WLAN_
DEVICE
:= rtl8723au
#SW_BOARD_USR_WIFI := rtl8723bs
#BOARD_WLAN_
DEVICE
:= rtl8723bs
endif
# 1.2 broadcom wifi support
BOARD_WIFI_VENDOR := broadcom
ifeq ($(BOARD_WIFI_VENDOR), broadcom)
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd
BOARD_WLAN_
DEVICE
:= bcmdhd
WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path"
#SW_BOARD_USR_WIFI := AP6181
#SW_BOARD_USR_WIFI := AP6210
#WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin"
#WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin"
#WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin"
# 2017/6/21 15:11 wenyuanbo configure ap6212 use ap6210
SW_BOARD_USR_WIFI := AP6212
WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm43438a0.bin"
WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm43438a0_p2p.bin"
WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm43438a0_apsta.bin"
#SW_BOARD_USR_WIFI := AP6330
#WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40183b2_ag.bin"
#WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40183b2_ag_p2p.bin"
#WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40183b2_ag_apsta.bin"
endif
#1.3 eag wifi config
#BOARD_WIFI_VENDOR := eagle
ifeq ($(BOARD_WIFI_VENDOR), eagle)
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_eagle
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_eagle
SW_BOARD_USR_WIFI := esp8089
BOARD_WLAN_
DEVICE
:= esp8089
endif
# 2. Bluetooth Configuration
# make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_BCM := true
#SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210
SW_BOARD_HAVE_BLUETOOTH_NAME := ap6212
#SW_BOARD_HAVE_BLUETOOTH_NAME := ap6330
#BOARD_HAVE_BLUETOOTH_RTK := true
#BLUETOOTH_HCI_USE_RTK_H5 := true
#SW_BOARD_HAVE_BLUETOOTH_NAME := rtl8723bs
R:\wyb\ap6212a0_a33_sc3817r\android\
device
\softwinner\astar-y3\init.sun8i.rc
on early-fs
mount_all /fstab.sun8i
setprop ro.crypto.fuse_sdcard true
insmod /system/vendor/modules/disp.ko
insmod /system/vendor/modules/lcd.ko
insmod /system/vendor/modules/mali.ko
insmod /system/vendor/modules/leds-sunxi.ko
insmod /system/vendor/modules/bcmdhd.ko
insmod /system/vendor/modules/bcm_btlpm.ko
#2G or 3G init.rc
# import init.sunxi.3gdongle.rc
## 1. realtek & eagle wifi service
## 1.1 realtek & eagle wifi sta service
#service wpa_supplicant /system/bin/wpa_supplicant \
# -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
# -O/data/misc/wifi/sockets \
# -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
# # we will start as root and wpa_supplicant will switch to user wifi
# # after setting up the capabilities required for WEXT
# # user wifi
# # group wifi inet keystore
# class main
# socket wpa_wlan0 dgram 660 wifi wifi
# disabled
# oneshot
## 1.2 realtek & eagle wifi sta p2p concurrent service
#service p2p_supplicant /system/bin/wpa_supplicant \
# -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
# -e/data/misc/wifi/entropy.bin -N \
# -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
# -O/data/misc/wifi/sockets \
# -g@android:wpa_wlan0
# class main
# socket wpa_wlan0 dgram 660 wifi wifi
# disabled
# oneshot
# 2. broadcom wifi service
# 2.1 broadcom wifi station and softap
service wpa_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-O/data/misc/wifi/sockets \
-e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
# we will start as root and wpa_supplicant will switch to user wifi
# after setting up the capabilities required for WEXT
# user wifi
# group wifi inet keystore
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
# 2.2 broadcom wifi sta p2p concurrent service
service p2p_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-O/data/misc/wifi/sockets -N \
-ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
-I/system/etc/wifi/p2p_supplicant_overlay.conf \
-puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \
-g@android:wpa_wlan0
# we will start as root and wpa_supplicant will switch to user wifi
# after setting up the capabilities required for WEXT
# user wifi
# group wifi inet keystore
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml
<integer name="def_screen_off_timeout">1800000</integer>
<bool name="def_lockscreen_disabled">true</bool>
R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\services\java\com\android\server\BatteryService.java
// private static final boolean DEBUG = false;
private static final boolean DEBUG = true;
private void sendIntentLocked() {
// Pack up the values and broadcast them to everyone
final Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
| Intent.FLAG_RECEIVER_REPLACE_PENDING);
int icon = getIconLocked(mBatteryProps.batteryLevel);
intent.putExtra(BatteryManager.EXTRA_STATUS, mBatteryProps.batteryStatus);
intent.putExtra(BatteryManager.EXTRA_HEALTH, mBatteryProps.batteryHealth);
intent.putExtra(BatteryManager.EXTRA_PRESENT, mBatteryProps.batteryPresent);
//intent.putExtra(BatteryManager.EXTRA_LEVEL, mBatteryProps.batteryLevel);
intent.putExtra(BatteryManager.EXTRA_LEVEL, 100);
intent.putExtra(BatteryManager.EXTRA_SCALE, BATTERY_SCALE);
intent.putExtra(BatteryManager.EXTRA_ICON_SMALL, icon);
intent.putExtra(BatteryManager.EXTRA_PLUGGED, mPlugType);
//intent.putExtra(BatteryManager.EXTRA_VOLTAGE, mBatteryProps.batteryVoltage);
intent.putExtra(BatteryManager.EXTRA_VOLTAGE, 4200);
intent.putExtra(BatteryManager.EXTRA_TEMPERATURE, mBatteryProps.batteryTemperature);
intent.putExtra(BatteryManager.EXTRA_TECHNOLOGY, mBatteryProps.batteryTechnology);
intent.putExtra(BatteryManager.EXTRA_INVALID_CHARGER, mInvalidCharger);
if (DEBUG) {
Slog.d(TAG, "2016/12/05 10:41 wenyuanbo **** Sending ACTION_BATTERY_CHANGED. level:" + mBatteryProps.batteryLevel +
", scale:" + BATTERY_SCALE + ", status:" + mBatteryProps.batteryStatus +
", health:" + mBatteryProps.batteryHealth + ", present:" + mBatteryProps.batteryPresent +
", voltage: " + mBatteryProps.batteryVoltage +
", temperature: " + mBatteryProps.batteryTemperature +
", technology: " + mBatteryProps.batteryTechnology +
", AC powered:" + mBatteryProps.chargerAcOnline + ", USB powered:" + mBatteryProps.chargerUsbOnline +
", Wireless powered:" + mBatteryProps.chargerWirelessOnline +
", icon:" + icon + ", invalid charger:" + mInvalidCharger);
mHandler.post(new Runnable() {
@Override
public void run() {
ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);
9、(直接拷贝同目录下的ap6210:)
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := bt_vendor.conf
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/bluetooth
LOCAL_MODULE_TAGS := eng
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\bt_vendor.conf
# UART
device
port where Bluetooth controller is attached
UartPort = /dev/ttyS1
# Firmware patch file location
FwPatchFilePath = /system/vendor/modules/
# Firmware Name
FwPatchFileName = bcm43438a0.hcd
10、新增:vnd_astar-y3-ap6212.txt,直接拷贝:vnd_astar-y2-ap6210.txt
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y3-ap6212.txt
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y2-ap6210.txt
BLUETOOTH_UART_
DEVICE
_PORT = "/dev/ttyS1"
FW_PATCHFILE_LOCATION = "/system/vendor/modules/"
LPM_IDLE_TIMEOUT_MULTIPLE = 5
UART_TARGET_BAUD_RATE = 1500000
BT_WAKE_VIA_PROC = TRUE
#LPM_SLEEP_MODE = FALSE
BTVND_DBG = TRUE
BTHW_DBG = TRUE
VNDUSERIAL_DBG = TRUE
UPIO_DBG = TRUE
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\src\userial_vendor.c
//#ifdef USE_AP6210_BT_MODULE
#if
defined
(USE_AP6210_BT_MODULE) ||
defined
(USE_AP6212_BT_MODULE)
/* PATCH for AP6210. Will detect CTS(module side) to select transport mode*/
ALOGE("userial vendor open: USE AP6210 BT MODULE.");
usleep(100000);
close(vnd_userial.fd);
if ((vnd_userial.fd = open(vnd_userial.port_name, O_RDWR)) == -1)
ALOGE("userial vendor open: unable to open %s", vnd_userial.port_name);
return -1;
#endif //USE_AP6210_BT_MODULE
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\Android.mk
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210)
LOCAL_CFLAGS += -DUSE_AP6210_BT_MODULE
endif
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212)
LOCAL_CFLAGS += -DUSE_AP6212_BT_MODULE
endif
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6330)
include $(LOCAL_PATH)/conf/softwinner/ap6330/Android.mk
endif
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210)
include $(LOCAL_PATH)/conf/softwinner/ap6210/Android.mk
endif
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212)
include $(LOCAL_PATH)/conf/softwinner/ap6212/Android.mk
endif
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\vnd_buildcfg.mk
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210)
SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6210.txt,$(basename $(TARGET_
DEVICE
))))
endif
ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212)
SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6212.txt,$(basename $(TARGET_
DEVICE
))))
endif
14、(这些AP6212的WIFI的bin文件和BT的hcd文件来自全志R16的SDK,当然也可以找正基原厂/代理商索取:)
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\bcm43438a0.hcd
(根据ap6210修改:)
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\
device
-bcm.mk
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
########################
-include hardware/broadcom/wlan/bcmdhd/config/config-bcm.mk
PRODUCT_COPY_FILES += \
hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0.bin:system/vendor/modules/fw_bcm43438a0.bin \
hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_apsta.bin:system/vendor/modules/fw_bcm43438a0_apsta.bin \
hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_p2p.bin:system/vendor/modules/fw_bcm43438a0_p2p.bin \
hardware/broadcom/wlan/firmware/ap6212/nvram_ap6210.txt:system/vendor/modules/nvram_ap6210.txt \
hardware/broadcom/wlan/firmware/ap6212/bcm43438a0.hcd:system/vendor/modules/bcm43438a0.hcd
#hardware/broadcom/wlan/firmware/ap6212/config.txt:system/vendor/modules/config.txt
########################
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0.bin
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_apsta.bin
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_p2p.bin
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\nvram_ap6212.txt
直接拷贝自nvram_ap6212.txt:
R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\nvram_ap6210.txt
15、(可选修改:)
R:\wyb\ap6212a0_a33_sc3817r\android\packages\apps\Camera2\src\com\android\camera\CameraActivity.java
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
int Level = intent.getIntExtra("level", 0);
int Scale = intent.getIntExtra("scale", 100);
Log.w(TAG, "2016/11/29 19:54 &&&& wenyuanbo battery Level" + Level);
*Logic:
*1.the battery level is lower then 5%.
*2.if in camera, make sure that not in the snapshot progress.
*3.if in videocamera, make sure that not in the videorecording progress.
*4.everytime starting the camera activity, the battery level is broadcasted,
* if meeting the conditions above, give a dialog, press it and finish the activity.
*5.if the conditions are not satisfied when started, play for a moment, in the camera acitvity
* or video camera activity, the conditiosn are satisfied, also give a dialog for finishing the activity.
*by fuqiang.
if(Level < 5)
Runnable runnable_close_camera = new Runnable() {
@Override
public void run() {
//close the camera.
// CameraActivity.this.finish();
Log.w(TAG, "2016/11/29 18:20 **** wenyuanbo battery Level" + Level);
showLocationDialog();
*Logic:
*1.the battery level is lhigher then 5% and lower than 15%.
*2.if in camera, make sure that not in the snapshot progress.
*3.if in videocamera, make sure that not in the videorecording progress.
*4.whether in camera or in videocamera, make sure that the flash mode is supported.
*5.everytime starting the camera activity, the battery level is broadcasted,
* if meeting the conditions above, forbidden the flash(gray icon), give a dialog to notise user.
*6.if the conditions are not satisfied when started, play for a moment, in the camera acitvity
* or video camera activity, the conditiosn are satisfied, forbidden the flash and give a notice dialog.
*7.the dialog is only given once for each camera activity starting.
*by fuqiang.
else if(Level < 16)
//close the flash mode.
if (mIsLowBatteryDialogShown == false)
mRotateDialog.showAlertDialog(
getString(R.string.warning),
getString(R.string.low_battery_15),
null, null,
getString(R.string.close), null);
mIsLowBatteryDialogShown = true;
16、(可选:)
R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg
bootdelay=3
loglevel=8
R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\y3\sys_config.fex
[power_sply]
dcdc1_vol = 3000
dcdc2_vol = 1100
dcdc3_vol = 1200
dcdc4_vol = 0
dcdc5_vol = 1500
aldo1_vol = 3300
aldo2_vol = 2500
aldo3_vol = 3000
dldo1_vol = 3300
dldo2_vol = 3300
dldo3_vol = 2800
;gpio0_vol = 2800
ldoio0_vol = 2800
;----------------------------------------------------------------------------------
;uart configuration
;uart_used = uart x enable
;uart_type = 2:2 wire,4:4 wire,8:8 wire, full function
;----------------------------------------------------------------------------------
[uart0]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PF02<3><1><default><default>
uart_rx = port:PF04<3><1><default><default>
[uart1]
uart_used = 1
uart_port = 1
uart_type = 4
uart_tx = port:PG06<2><1><default><default>
uart_rx = port:PG07<2><1><default><default>
uart_rts = port:PG08<2><1><default><default>
uart_cts = port:PG09<2><1><default><default>
[uart2]
uart_used = 1
uart_type = 4
uart_tx = port:PB00<2><1><default><default>
uart_rx = port:PB01<2><1><default><default>
uart_rts = port:PB02<2><1><default><default>
uart_cts = port:PB03<2><1><default><default>
[uart3]
uart_used = 0
uart_type = 4
uart_tx = port:PH06<3><1><default><default>
uart_rx = port:PH07<3><1><default><default>
uart_rts = port:PH08<3><1><default><default>
uart_cts = port:PH09<3><1><default><default>
[uart4]
uart_used = 0
uart_port = 4
uart_type = 2
uart_tx = port:PA04<2><1><default><default>
uart_rx = port:PA05<2><1><default><default>
uart_rts = port:PA06<2><1><default><default>
uart_cts = port:PA07<2><1><default><default>
;----------------------------------------------------------------------------------
;capacitor tp configuration
;ctp_twi_id : twi controller ID
;ctp_twi_addr : I2C slave address, 7bit
;ctp_screen_max_x/_y : resolution of touch panel
;ctp_revert_x/_y_flag : whether need to revert x/y
;ctp_exchange_x_y_flag: whether need to exchange the value of x and y
;ctp_int_port : port for tp's interrupt signal
;ctp_wakeup : port for wakeup tp
;----------------------------------------------------------------------------------
[ctp_para]
ctp_used = 1
ctp_name = "gt82x"
ctp_twi_id = 0
ctp_twi_addr = 0x5d
ctp_screen_max_x = 1280
ctp_screen_max_y = 800
ctp_revert_x_flag = 1
ctp_revert_y_flag = 1
ctp_exchange_x_y_flag = 1
ctp_int_port = port:PL04<4><default><default><default>
ctp_wakeup = port:PL03<1><default><default><1>
ctp_power_ldo =
ctp_power_ldo_vol =
ctp_power_io =
;--------------------------------------------------------------------------------
; CTP automatic detection configuration
;ctp_detect_used --- Whether startup automatic inspection function. 1:used,0:unused
;Module name postposition 1 said detection, 0 means no detection.
;--------------------------------------------------------------------------------
[ctp_list_para]
ctp_det_used = 1
ft5x_ts = 1
gt82x = 1
gslX680 = 1
gslX680new = 0
gt9xx_ts = 1
gt9xxf_ts = 0
tu_ts = 0
gt818_ts = 1
zet622x = 1
aw5306_ts = 1
icn83xx_ts = 0
[lcd0_para]
lcd_used = 1
lcd_driver_name = "default_lcd"
lcd_if = 3
lcd_x = 1280
lcd_y = 800
lcd_width = 150
lcd_height = 94
lcd_dclk_freq = 71
lcd_pwm_used = 1
lcd_pwm_ch = 0
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_hbp = 20
lcd_ht = 1418
lcd_hspw = 10
lcd_vbp = 10
lcd_vt = 830
lcd_
vs
pw = 5
lcd_lvds_if = 0
lcd_lvds_colordepth = 1
lcd_lvds_mode = 0
lcd_frm = 1
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
lcd_bl_en = port:PD13<1><0><default><1>
;ap6xxx_wl_regon = port:PL06<1><default><default><0>
;lcd_bl_en = port:PL06<1><0><default><1>
lcd_power = "axp22_dc1sw"
lcdd0 = port:PD18<3><0><default><default>
lcdd1 = port:PD19<3><0><default><default>
lcdd2 = port:PD20<3><0><default><default>
lcdd3 = port:PD21<3><0><default><default>
lcdd4 = port:PD22<3><0><default><default>
lcdd5 = port:PD23<3><0><default><default>
lcdd6 = port:PD24<3><0><default><default>
lcdd7 = port:PD25<3><0><default><default>
lcdd8 = port:PD26<3><0><default><default>
lcdd9 = port:PD27<3><0><default><default>
;----------------------------------------------------------------------------------
;pwm config
;----------------------------------------------------------------------------------
[pwm0_para]
pwm_used = 0
pwm_positive = port:PH00<2><0><default><default>
[pwm1_para]
pwm_used = 1
pwm_positive = port:PH01<2><0><default><default>
;--------------------------------------------------------------------------------
;wifi configuration
;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3
;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2
;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0)
;wifi_mod_sel: 0- none, 1- ap6181, 2- ap6210(wifi+bt),
; 3 - rtl8188eu, 4- rtl8723au(wifi+bt),
; 5 - rtl8723bs, 6- esp8089
;--------------------------------------------------------------------------------
[wifi_para]
wifi_used = 1
wifi_sdc_id = 1
wifi_usbc_id = 1
wifi_usbc_type = 1
wifi_mod_sel = 2
wifi_power = "axp22_dldo1"
wifi_power_ext1 = "axp22_dldo2"
wifi_power_ext2 = "axp22_aldo1"
wifi_power_switch =
;wifi_power_switch = port:power0<1><0><default><0>
; 1 - ap6181 sdio wifi gpio config
;ap6xxx_wl_regon = port:PL06<1><default><default><0>
;ap6xxx_wl_host_wake = port:PL07<4><default><default><0>
;ap6xxx_lpo_use_apclk = 1
; 2 - ap6210 sdio wifi gpio config
ap6xxx_wl_regon = port:PL06<1><default><default><0>
;ap6xxx_wl_regon = port:PD13<1><default><default><0>
ap6xxx_wl_host_wake = port:PL07<4><default><default><0>
ap6xxx_bt_regon = port:PL08<1><default><default><0>
ap6xxx_bt_wake = port:PL10<1><default><default><0>
ap6xxx_bt_host_wake = port:PL09<4><default><default><0>
ap6xxx_lpo_use_apclk = 1
; 3 - rtl8188eu usb wifi gpio conifg
; 4 - rtl8723au usb wifi + bt
; 5 - rtl8723bs sdio wifi + bt
;rtl8723bs_chip_en = port:PL11<1><default><default><0>
;rtl8723bs_wl_regon = port:PL06<1><default><default><0>
;rtl8723bs_wl_host_wake = port:PL07<4><default><default><0>
;rtl8723bs_bt_regon = port:PL08<1><default><default><0>
;rtl8723bs_bt_wake = port:PL10<1><default><default><0>
;rtl8723bs_bt_host_wake = port:PL09<4><default><default><0>
;rtl8723bs_lpo_use_apclk = 0
; 6 - eagle sdio wifi
;esp_wl_chip_en = port:PL03<1><default><default><0>
;esp_wl_rst = port:PL02<1><default><default><0>
;--------------------------------------------------------------------------------
;blue tooth
;bt_used ---- blue tooth used (0- no used, 1- used)
;bt_uard_id ---- uart index
;--------------------------------------------------------------------------------
[bt_para]
bt_used = 1
bt_uart_id = 1
power_start = 3
pmu_temp_enable = 0
在设置→WLAN(打开之后):
shell@astar-y3:/ $
shell@astar-y3:/ $ [ 469.609956] init: computing context for service '/system/bin/wpa_supplicant'
[ 469.618386] init: starting 'p2p_supplicant'
[ 469.625739] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'
[ 469.673379] init: waitpid returned pid 2065, status = 0000ff00
[ 469.679923] init: process 'p2p_supplicant', pid 2065 exited
[ 476.197334] sndpcm_unmute,line:1099
[ 451.464755] CPU1: Booted secondary processor
[ 478.459403] CPU1: shutdown
[ 478.462947] [hotplug]: cpu(0) try to kill cpu(1)
[ 478.468478] [hotplug]: cpu1 is killed! .
shell@astar-y3:/ $
分析启动的log:
[ 17.526849] gpio ap6xxx_wl_regon set val 1, act val 1
[ 17.632508] [ap6xxx]: sdio wifi power state: on
[ 17.637576] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 17.637751] =========== WLAN placed in POWER ON ========
[ 17.654651] [mmc]: sdc1 card_power_on start...
[ 17.659576] [mmc]: sdc1 power_supply is null
[ 17.664322] [mmc]: sdc1 card_power_on ok
[ 17.680039] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 17.690275] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 17.772361] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !!
[ 17.781309] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !!
[ 17.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 17.799714] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 17.862032] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 17.872262] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 17.933953] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8, RTO !!
[ 17.941997] *******************Try sdio*******************
[ 17.948400] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 17.958630] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 18.027775] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[ 18.035416] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 18.043087] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 18.051920] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[ 18.145287] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 18.155436] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 18.215346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 18.225736] [mmc]: mclk 0xf1c2008c 0x8100000b
[ 18.285675] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 18.296021] [mmc]: mclk 0xf1c2008c 0x8140030b
[ 18.357915] mmc1: new high speed SDIO card at address 0001
[ 18.364532] bcmsdh_register: Linux Kernel SDIO/MMC Driver
[ 18.364575] *******************sdio init ok*******************
[ 18.377207] bcm_wlan_get_oob_irq enter.
[ 18.381537] gpio [359] map to virq [7] ok
[ 18.388851] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4
[ 18.396019] dhdsdio_probe_attach: unsupported chip: 0xa9a6
[ 18.402155] dhdsdio_probe: dhdsdio_probe_attach failed
[ 18.407899] bcmsdh_probe:
device
attach failed
[ 18.412981]
[ 18.412984] Dongle Host Driver, version 1.88.45.3 (r420671)
[ 18.412989] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 12:06:39
[ 18.428835] dhd_module_init: sdio_register_driver timeout or error
[ 18.435928] gpio ap6xxx_wl_regon set val 0, act val 0
[ 18.541549] [ap6xxx]: sdio wifi power state: off
[ 18.546679] =========== WLAN placed in POWER OFF ========
[ 18.546915] mmc1: card 0001 removed
[ 18.546995] [mmc]: mmc not poweroff notifiy
[ 18.547007] [mmc]: sdc1 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 18.547160] [mmc]: sdc1 card_power_off start...
[ 18.547166] [mmc]: sdc1 power_supply is null
[ 18.547173] [mmc]: sdc1 card_power_off ok
[ 18.631655] init: command 'insmod' r=-1
[ 18.636066] init: command 'insmod' r=-1
[ 18.658010] fs_mgr: swapon failed for /dev/block/zram0
[ 18.663804] init: command 'swapon_all' r=-1
[ 18.668504] init: processing action 0x58e70 (console_init)
[ 18.675396] init: width = 1280
[ 18.678788] init: height = 800
[ 18.682224] init: s.st_size = 3145728
[ 18.686308] init: logo match failed!fbsize = 4096000
[ 18.718811] init: command 'console_init' r=0
[ 18.723628] init: processing action 0x55bf0 (fs)
[ 18.730640] init: command 'mkdir' r=-2
[ 18.741901] init: command 'insmod' r=0
[ 18.752227] init: command 'insmod' r=0
[ 18.756491] init: command 'insmod' r=-1
[ 18.771211] init: command 'insmod' r=0
[ 18.779731] init: command 'insmod' r=0
[ 18.791739] init: command 'insmod' r=0
[ 18.803941] init: command 'insmod' r=0
[ 18.816178] init: command 'insmod' r=0
19、查找:(dhdsdio_probe_attach: unsupported chip: 0xa9a6)
rootroot@rootroot-E400:~$ cd wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd/
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "unsupported chip" . -R
./dhd_sdio.c: DHD_ERROR(("%s: unsupported chip: 0xx\n",
./sbutils.c: SI_ERROR(("sb_chip2numcores: unsupported chip 0x%x\n",
匹配到二进制文件 ./dhd_sdio.o
匹配到二进制文件 ./bcmdhd.o
匹配到二进制文件 ./bcmdhd.ko
匹配到二进制文件 ./sbutils.o
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
经过确认:
R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\dhd_sdio.c
static bool
dhdsdio_probe_attach(struct dhd_bus *bus, osl_t *osh, void *sdh, void *regsva,
uint16 devid)
bcmsdh_chipinfo(sdh, bus->sih->chip, bus->sih->chiprev);
if (!dhdsdio_chipmatch((uint16)bus->sih->chip)) {
DHD_ERROR(("%s: unsupported chip: 0xx\n",
__FUNCTION__, bus->sih->chip));
goto fail;
继续追踪:
static bool
dhdsdio_chipmatch(uint16 chipid)
if (chipid == BCM4325_CHIP_ID)
return TRUE;
if (chipid == BCM4329_CHIP_ID)
return TRUE;
if (chipid == BCM4315_CHIP_ID)
return TRUE;
if (chipid == BCM4319_CHIP_ID)
return TRUE;
if (chipid == BCM4336_CHIP_ID)
return TRUE;
if (chipid == BCM4330_CHIP_ID)
return TRUE;
if (chipid == BCM43237_CHIP_ID)
return TRUE;
if (chipid == BCM43362_CHIP_ID)
return TRUE;
if (chipid == BCM4314_CHIP_ID)
return TRUE;
if (chipid == BCM43242_CHIP_ID)
return TRUE;
if (chipid == BCM43340_CHIP_ID)
return TRUE;
if (chipid == BCM43341_CHIP_ID)
return TRUE;
if (chipid == BCM43143_CHIP_ID)
return TRUE;
if (chipid == BCM43342_CHIP_ID)
return TRUE;
if (chipid == BCM4334_CHIP_ID)
return TRUE;
if (chipid == BCM43239_CHIP_ID)
return TRUE;
if (chipid == BCM4324_CHIP_ID)
return TRUE;
if (chipid == BCM4335_CHIP_ID)
return TRUE;
if (chipid == BCM4339_CHIP_ID)
return TRUE;
if (chipid == BCM43349_CHIP_ID)
return TRUE;
if (chipid == BCM4345_CHIP_ID)
return TRUE;
if (chipid == BCM4350_CHIP_ID)
return TRUE;
if (chipid == BCM4354_CHIP_ID)
return TRUE;
if (chipid == BCM4356_CHIP_ID)
return TRUE;
if (chipid == BCM4358_CHIP_ID)
return TRUE;
if (chipid == BCM4371_CHIP_ID)
return TRUE;
if (chipid == BCM43430_CHIP_ID)
return TRUE;
if (BCM4349_CHIP(chipid))
return TRUE;
return FALSE;
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ll
总用量 40
drwxr-xr-x 7 rootroot rootroot 4096 6月 26 12:02 ./
drwx------ 6 rootroot rootroot 4096 6月 26 14:16 ../
drwxr-xr-x 10 rootroot rootroot 4096 9月 4 2014 brandy/
-rw-rw-r-- 1 rootroot rootroot 116 6月 26 12:02 .buildconfig
drwxr-xr-x 15 rootroot rootroot 4096 9月 4 2014 buildroot/
-r-xr-xr-x 1 rootroot rootroot 55 9月 4 2014 build.sh*
drwxr-xr-x 28 rootroot rootroot 4096 6月 26 14:30 linux-3.4/
drwxrwxr-x 3 rootroot rootroot 4096 6月 26 12:02 out/
-r--r--r-- 1 rootroot rootroot 232 9月 4 2014 README
drwxr-xr-x 7 rootroot rootroot 4096 6月 7 19:33 tools/
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config
Welcome to mkscript setup progress
All available chips:
0. sun8iw5p1
Choice: 0
All available platforms:
0. android
1. dragonboard
2. linux
Choice: 0
All available kernel:
0. linux-3.4
Choice: 0
All available boards:
0. evb
1. maple
2. redwood
3. y2
4. y3
Choice: 4
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh
INFO: ----------------------------------------
INFO: build lichee ...
INFO: chip: sun8iw5p1
INFO: platform: android
INFO: kernel: linux-3.4
INFO: board: y3
INFO: output: out/sun8iw5p1/android/y3
INFO: ----------------------------------------
INFO: build buildroot ...
external toolchain has been installed
INFO: build buildroot OK.
INFO: build kernel ...
INFO: prepare toolchain ...
Building kernel
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: “include/generated/mach-types.h”是最新的。
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC arch/arm/mach-sunxi/pm/standby/common.o
CC arch/arm/mach-sunxi/pm/standby/standby_clock.o
CC arch/arm/mach-sunxi/pm/standby/standby_ir.o
CC arch/arm/mach-sunxi/pm/standby/standby_key.o
CC arch/arm/mach-sunxi/pm/standby/standby_power.o
CC arch/arm/mach-sunxi/pm/standby/standby_twi.o
CC arch/arm/mach-sunxi/pm/standby/standby_usb.o
AS arch/arm/mach-sunxi/pm/standby/standby_delay.o
CC arch/arm/mach-sunxi/pm/standby/./arisc/standby_arisc.o
CC arch/arm/mach-sunxi/pm/standby/./arisc/arisc_hwmsgbox.o
CHK kernel/config_data.h
CC arch/arm/mach-sunxi/pm/standby/./arisc/arisc_hwspinlock.o
CC arch/arm/mach-sunxi/pm/standby/./arisc/arisc_message_manager.o
CC arch/arm/mach-sunxi/pm/standby/./../pm_debug.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_timing.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_mmu_pc.o
AS arch/arm/mach-sunxi/pm/standby/./../mem_mmu_pc_asm.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_serial.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_printk.o
AS arch/arm/mach-sunxi/pm/standby/./../mem_divlib.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_divlibc.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_int.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_tmr.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_tmstmp.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_clk.o
CC arch/arm/mach-sunxi/pm/standby/./../mem_hwspinlock.o
CC arch/arm/mach-sunxi/pm/standby/standby.o
rm -rf *.o arch/arm/mach-sunxi/pm/standby/../*.o
CC arch/arm/mach-sunxi/pm/standby/super/common.o
CC arch/arm/mach-sunxi/pm/standby/super/super_twi.o
CC [M] drivers/net/wireless/bcmdhd/dhd_sdio.o
AS arch/arm/mach-sunxi/pm/standby/super/super_delay.o
CC arch/arm/mach-sunxi/pm/standby/super/super_clock.o
CC arch/arm/mach-sunxi/pm/standby/super/super_power.o
CC arch/arm/mach-sunxi/pm/standby/super/super_cpus.o
AS arch/arm/mach-sunxi/pm/standby/super/resume/resume1.o
CC arch/arm/mach-sunxi/pm/standby/super/resume/resume_head.o
CC arch/arm/mach-sunxi/pm/standby/super/resume/resume1_c_part.o
CC arch/arm/mach-sunxi/pm/standby/../pm_debug.o
CC arch/arm/mach-sunxi/pm/standby/../mem_timing.o
CC arch/arm/mach-sunxi/pm/standby/../mem_mmu_pc.o
AS arch/arm/mach-sunxi/pm/standby/../mem_mmu_pc_asm.o
CC arch/arm/mach-sunxi/pm/standby/../mem_cpu.o
CC arch/arm/mach-sunxi/pm/standby/../mem_serial.o
CC arch/arm/mach-sunxi/pm/standby/../mem_printk.o
CC [M] drivers/net/wireless/bcmdhd/dhd_cdc.o
CC [M] drivers/net/wireless/bcmdhd/bcmsdh_linux.o
CC [M] drivers/net/wireless/bcmdhd/dhd_common.o
AS arch/arm/mach-sunxi/pm/standby/../mem_divlib.o
CC arch/arm/mach-sunxi/pm/standby/../mem_divlibc.o
drivers/net/wireless/bcmdhd/dhd_sdio.c: In function ‘dhdsdio_chipmatch’:
drivers/net/wireless/bcmdhd/dhd_sdio.c:6936:16: error: ‘BCM43430_CHIP_ID’ undeclared (first use in this function)
drivers/net/wireless/bcmdhd/dhd_sdio.c:6936:16: note: each undeclared identifier is reported only once for each function it appears in
CC arch/arm/mach-sunxi/pm/standby/../mem_int.o
make[4]: *** [drivers/net/wireless/bcmdhd/dhd_sdio.o] 错误 1
make[4]: *** 正在等待未完成的任务....
CC arch/arm/mach-sunxi/pm/standby/../mem_tmr.o
CC arch/arm/mach-sunxi/pm/standby/../mem_tmstmp.o
CC arch/arm/mach-sunxi/pm/standby/../mem_hwspinlock.o
CC arch/arm/mach-sunxi/pm/standby/../mem_clk.o
Source file is open
Destination file is created.
Source file is open
Destination file is open.
temp value is 400.
soure_file size is 9496.
destination_file size is 0x2800.
check sum generated is 0x68D92007.
Everything is ok.
rm -rf *.o arch/arm/mach-sunxi/pm/standby/../*.o
CC arch/arm/mach-sunxi/pm/mem_mapping.o
CC arch/arm/mach-sunxi/pm/mem_divlibc.o
CC arch/arm/mach-sunxi/pm/mem_cpu.o
AS arch/arm/mach-sunxi/pm/mem_cpu_asm.o
AS arch/arm/mach-sunxi/pm/mem_mmu_pc_asm.o
CC arch/arm/mach-sunxi/pm/mem_mmu_pc.o
CC arch/arm/mach-sunxi/pm/mem_int.o
CC arch/arm/mach-sunxi/pm/mem_clk.o
CC arch/arm/mach-sunxi/pm/mem_tmr.o
CC arch/arm/mach-sunxi/pm/mem_tmstmp.o
CC arch/arm/mach-sunxi/pm/mem_twi.o
CC arch/arm/mach-sunxi/pm/mem_gpio.o
CC arch/arm/mach-sunxi/pm/mem_sram.o
CC arch/arm/mach-sunxi/pm/mem_ccu.o
CC arch/arm/mach-sunxi/pm/mem_cci400.o
CC arch/arm/mach-sunxi/pm/mem_gtbus.o
CC arch/arm/mach-sunxi/pm/pm_debug.o
CC arch/arm/mach-sunxi/pm/mem_timing.o
CC arch/arm/mach-sunxi/pm/mem_hwspinlock.o
CC arch/arm/mach-sunxi/pm/pm.o
CC arch/arm/mach-sunxi/pm/extended_standby.o
CC arch/arm/mach-sunxi/pm/standby/super/super_power.o
CC arch/arm/mach-sunxi/pm/standby/super/super_twi.o
CC arch/arm/mach-sunxi/pm/standby/super/super_clock.o
AS arch/arm/mach-sunxi/pm/standby.o
AS arch/arm/mach-sunxi/pm/mem.o
LD arch/arm/mach-sunxi/pm/pm_tmp.o
LD arch/arm/mach-sunxi/pm/built-in.o
LD arch/arm/mach-sunxi/built-in.o
make[3]: *** [drivers/net/wireless/bcmdhd] 错误 2
make[2]: *** [drivers/net/wireless] 错误 2
make[1]: *** [drivers/net] 错误 2
make: *** [drivers] 错误 2
ERROR: build kernel Failed
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$
21、(dhdsdio_probe_attach: unsupported chip: 0xa9a6)
R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\include\bcmde
vs
.h
#define BCM4350_CHIP_ID 0x4350
#define BCM43430_CHIP_ID 43430 /* 43430 chipcommon chipid 0xa9a6 */
#define BCM4342_CHIP_ID 4342
可以编译通过了。
(查看属性:)
shell@astar-y3:/ $
shell@astar-y3:/ $ cd /system/vendor/modules/
shell@astar-y3:/system/vendor/modules $ ll bcm*
-rw-r--r-- root root 26020 2017-06-26 12:46 bcm43438a0.hcd
-rw-r--r-- root root 748856 2017-06-26 12:46 bcmdhd.ko
shell@astar-y3:/system/vendor/modules $
Microsoft Windows [版本 6.1.7600]
C:\Users\Administrator>cd R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\n
et\wireless\bcmdhd
C:\Users\Administrator>r:
R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb remount
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
remount succeeded
R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>
R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb push bcmdhd.ko /system/vendor/modules/
1677 KB/s (748864 bytes in 0.436s)
R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>
继续查看属性:
shell@astar-y3:/system/vendor/modules $ ll bcm*
-rw-r--r-- root root 26020 2017-06-26 12:46 bcm43438a0.hcd
-rw-rw-rw- root root 748864 2017-06-26 14:34 bcmdhd.ko
shell@astar-y3:/system/vendor/modules $
shell@astar-y3:/system/vendor/modules $
shell@astar-y3:/system/vendor/modules $ chmod 644 bcmdhd.ko
Unable to chmod bcmdhd.ko: Operation not permitted
10|shell@astar-y3:/system/vendor/modules $
(必须在su下才能够修改属性:)
shell@astar-y3:/system/vendor/modules $ su
shell@astar-y3:/system/vendor/modules # chmod 644 bcmdhd.ko
shell@astar-y3:/system/vendor/modules #
shell@astar-y3:/system/vendor/modules # sync
shell@astar-y3:/system/vendor/modules # reboot
[ 0.658241] [wifi]: select wifi: ap6210 !!
[ 0.658587] [ap6xxx]: module power name axp22_dldo1
[ 0.658601] [ap6xxx]: module power ext1 name axp22_dldo2
[ 0.658613] [ap6xxx]: module power ext2 name axp22_aldo1
[ 0.658721] [ap6xxx]: get ap6xxx wifi_power_switch failed
[ 0.658731] [ap6xxx]: ap6xxx module power set by axp.
[ 0.658930] [ap6xxx]: first time
[ 0.659285] [ap6xxx]: regulator on.
[ 0.661306] [wifi_pm]: wifi gpio init is OK !!
(重启之后,WIFI模块要想办法配置为ap6212,现阶段借用的是AP6210!)
[ 8.517657] gpio ap6xxx_wl_regon set val 1, act val 1
[ 8.623325] [ap6xxx]: sdio wifi power state: on
[ 8.628389] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 8.628566] =========== WLAN placed in POWER ON ========
[ 8.645459] [mmc]: sdc1 card_power_on start...
[ 8.650397] [mmc]: sdc1 power_supply is null
[ 8.655129] [mmc]: sdc1 card_power_on ok
[ 8.680031] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 8.690267] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 8.772360] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !!
[ 8.781316] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !!
[ 8.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 8.799684] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 8.861971] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 8.872189] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 8.933887] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8, RTO !!
[ 8.941921] *******************Try sdio*******************
[ 8.948329] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B
[ 8.958545] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 9.027690] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[ 9.035325] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 9.043192] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 9.052046] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[ 9.145358] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 9.155486] [mmc]: mclk 0xf1c2008c 0x8002000e
[ 9.215398] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B
[ 9.225785] [mmc]: mclk 0xf1c2008c 0x8100000b
[ 9.285721] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 9.296049] [mmc]: mclk 0xf1c2008c 0x8140030b
[ 9.357922] mmc1: new high speed SDIO card at address 0001
[ 9.364523] bcmsdh_register: Linux Kernel SDIO/MMC Driver
[ 9.364563] *******************sdio init ok*******************
[ 9.377203] bcm_wlan_get_oob_irq enter.
[ 9.381534] gpio [359] map to virq [7] ok
[ 9.388816] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4
[ 9.396740] DHD: dongle ram size is set to 524288(orig 524288) at 0x0
[ 9.404660] dhdsdio_probe: Disable prop_txstatus
[ 9.410903] wl_create_event_handler(): thread:wl_event_handler:5d started
[ 9.410914] tsk Enter, tsk = 0xddca13d8
[ 9.423788] p2p0: P2P Interface Registered
[ 9.428464] dhd_attach(): thread:dhd_watchdog_thread:5e started
[ 9.435144] dhd_attach(): thread:dhd_dpc:5f started
[ 9.440653] dhd_attach(): thread:dhd_sysioc:60 started
[ 9.447276] Broadcom Dongle Host Driver: register interface [wlan0] MAC: 00:90:4c:11:22:33
[ 9.456558]
[ 9.456561] Dongle Host Driver, version 1.88.45.3 (r420671)
[ 9.456565] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04
[ 9.472427] gpio ap6xxx_wl_regon set val 0, act val 0
[ 9.578054] [ap6xxx]: sdio wifi power state: off
[ 9.583186] =========== WLAN placed in RESET ========
(WIFI启动加载正常)
shell@astar-y3:/ $ lsmod
gt82x 9849 0 - Live 0x00000000
sunxi_schw 12559 0 - Live 0x00000000 (O)
cdc_ether 5099 0 - Live 0x00000000
rtl8150 9023 0 - Live 0x00000000
mcs7830 6292 0 - Live 0x00000000
qf9700 7805 0 - Live 0x00000000
asix 17150 0 - Live 0x00000000
usbnet 17700 4 cdc_ether,mcs7830,qf9700,asix, Live 0x00000000
sunxi_keyboard 3021 0 - Live 0x00000000
sw_
device
13604 0 - Live 0x00000000
vfe_v4l2 445364 0 - Live 0x00000000
gc2035 12696 0 - Live 0x00000000
gc0308 10702 0 - Live 0x00000000
vfe_subdev 4523 3 vfe_v4l2,gc2035,gc0308, Live 0x00000000
vfe_os 4099 2 vfe_v4l2,vfe_subdev, Live 0x00000000
cci 21594 2 gc2035,gc0308, Live 0x00000000
videobuf_dma_contig 5535 1 vfe_v4l2, Live 0x00000000
videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000
bcmdhd 556965 0 - Live 0x00000000
leds_sunxi 1351 0 - Live 0x00000000
mali 209914 20 - Live 0x00000000 (O)
lcd 38180 0 - Live 0x00000000
disp 993096 8 mali,lcd, Live 0x00000000
nand 280622 0 - Live 0x00000000 (O)
shell@astar-y3:/ $
(bcmdhd.ko这个驱动模块加载正常:)
(BT没有打开,但是不停地打印BT超时出错,不知道是何解?)
shell@astar-y3:/ $ [ 511.880344] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired
[ 511.887326] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle
由于此时WIFI出于记住上一次的状态的状态(打不开),所以需要重新刷镜像IMG,然后替换:bcmdhd.ko
shell@astar-y3:/ $
shell@astar-y3:/ $ lsmod
gt82x 9849 0 - Live 0x00000000
sunxi_schw 12559 0 - Live 0x00000000 (O)
cdc_ether 5099 0 - Live 0x00000000
rtl8150 9023 0 - Live 0x00000000
mcs7830 6292 0 - Live 0x00000000
qf9700 7805 0 - Live 0x00000000
asix 17150 0 - Live 0x00000000
usbnet 17700 4 cdc_ether,mcs7830,qf9700,asix, Live 0x00000000
sunxi_keyboard 3021 0 - Live 0x00000000
sw_
device
13604 0 - Live 0x00000000
vfe_v4l2 445364 0 - Live 0x00000000
gc2035 12696 0 - Live 0x00000000
gc0308 10702 0 - Live 0x00000000
vfe_subdev 4523 3 vfe_v4l2,gc2035,gc0308, Live 0x00000000
vfe_os 4099 2 vfe_v4l2,vfe_subdev, Live 0x00000000
cci 21594 2 gc2035,gc0308, Live 0x00000000
videobuf_dma_contig 5535 1 vfe_v4l2, Live 0x00000000
videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000
bcmdhd 556965 0 - Live 0x00000000
leds_sunxi 1351 0 - Live 0x00000000
mali 209914 15 - Live 0x00000000 (O)
lcd 38180 0 - Live 0x00000000
disp 993096 8 mali,lcd, Live 0x00000000
nand 280622 0 - Live 0x00000000 (O)
shell@astar-y3:/ $
shell@astar-y3:/ $
shell@astar-y3:/ $ [ 110.012176] init: computing context for service '/system/bin/wpa_supplicant'
[ 110.025400] init: starting 'p2p_supplicant'
[ 110.039886] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'
[ 110.119751] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin
[ 110.140144]
[ 110.140153] Dongle Host Driver, version 1.88.45.3 (r420671)
[ 110.140158] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04
[ 110.173523] wl_android_wifi_on in 1
[ 110.177409] wl_android_wifi_on in 2: g_wifi_on=0
[ 110.200103] gpio ap6xxx_wl_regon set val 1, act val 1
[ 110.280025] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired
[ 110.286694] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle
[ 110.355684] [ap6xxx]: sdio wifi power state: on
[ 110.360930] =========== WLAN going back to live ========
[ 110.366925] sdio_reset_comm():
[ 110.370346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 110.380773] [mmc]: mclk 0xf1c2008c 0x8140030b
[ 110.443029] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 110.454758] [mmc]: mclk 0xf1c2008c 0x8140030b
[ 110.516097] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 110.530958] [mmc]: mclk 0xf1c2008c 0x80430309
[ 110.592013] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 110.603518] [mmc]: mclk 0xf1c2008c 0x80030009
[ 110.681418] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[ 110.690726] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 110.700331] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[ 110.712218] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[ 110.894520] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 110.904933] [mmc]: mclk 0xf1c2008c 0x80030009
[ 110.964907] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 110.975514] [mmc]: mclk 0xf1c2008c 0x8100000b
[ 111.035618] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B
[ 111.046398] [mmc]: mclk 0xf1c2008c 0x8140030b
[ 111.108547]
[ 111.108566]
[ 111.108579] dhd_bus_devreset: == WLAN ON ==
[ 111.116882] dhd_bus_devreset called when dongle is not in reset
[ 111.123683] Will call dhd_bus_start instead
[ 111.128637] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin
[ 111.140963] dhd_conf_download_config: Ignore config file /system/vendor/modules/config.txt
[ 111.151802] Final fw_path=/system/vendor/modules/fw_bcm43438a0.bin
[ 111.158689] Final nv_path=/system/vendor/modules/nvram_ap6210.txt
[ 111.165542] Final conf_path=/system/vendor/modules/config.txt
[ 111.257577] dhdsdio_download_nvram: Open nvram file failed /system/vendor/modules/nvram_ap6210.txt
[ 111.268309] _dhdsdio_download_firmware: dongle nvram file download failed
[ 111.276022] dhd_bus_start: dhdsdio_probe_download failed. firmware = /system/vendor/modules/fw_bcm43438a0.bin nvram = /system/vendor/modules/nvram_ap6210.txt config = /system/vendor/modules/config.txt
[ 111.295979] dhd_bus_devreset: dhd_bus_start fail with -1
[ 111.304154] dhd_dev_reset: dhd_bus_devreset: -1
[ 111.309190] dhd_prot_ioctl : bus is down. we have nothing to do
[ 111.330328] dhd_bus_devreset: WLAN OFF DONE
[ 111.335225] gpio ap6xxx_wl_regon set val 0, act val 0
[ 111.472499] [ap6xxx]: sdio wifi power state: off
[ 111.477661] =========== WLAN placed in RESET ========
[ 111.483304] wl_android_wifi_on: Failed
[ 111.487473] wl_android_wifi_off in 1
[ 111.491478] wl_android_wifi_off in 2: g_wifi_on=0
[ 111.496711] wl_android_wifi_off out
[ 111.509335] init: waitpid returned pid 1211, status = 0000ff00
[ 111.516072] init: process 'p2p_supplicant', pid 1211 exited
shell@astar-y3:/ $
shell@astar-y3:/ $
24、定位问题:dhd_bus_devreset: dhd_bus_start fail with -1
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/drivers/net/wireless/bcmdhd/
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "dhd_bus_start fail with" . -R
./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",
匹配到二进制文件 ./dhd_sdio.o
匹配到二进制文件 ./bcmdhd.o
匹配到二进制文件 ./bcmdhd.ko
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/drivers/net/wireless/bcmdhd/
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "dhd_bus_start fail with" . -R
./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",
匹配到二进制文件 ./dhd_sdio.o
匹配到二进制文件 ./bcmdhd.o
匹配到二进制文件 ./bcmdhd.ko
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
dhd_bus_devreset(dhd_pub_t *dhdp, uint8 flag)
dhd_conf_set_fw_name_by_chip(dhdp, fw_path, firmware_path);
if ((bcmerror = dhd_bus_start(dhdp)) != 0)
DHD_ERROR(("%s: dhd_bus_start fail with %d\n",
__FUNCTION__, bcmerror));
return bcmerror;
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep dhd_bus_start . -R
./dhd_sdio.c: if ((ret = dhd_bus_start(bus->dhd)) != 0) {
./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__));
./dhd_sdio.c: DHD_ERROR(("Will call dhd_bus_start instead\n"));
./dhd_sdio.c: if ((bcmerror = dhd_bus_start(dhdp)) != 0)
./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",
./dhd_sdio - 副本.c: if ((ret = dhd_bus_start(bus->dhd)) != 0) {
./dhd_sdio - 副本.c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__));
./dhd_sdio - 副本.c: DHD_ERROR(("Will call dhd_bus_start instead\n"));
./dhd_sdio - 副本.c: if ((bcmerror = dhd_bus_start(dhdp)) != 0)
./dhd_sdio - 副本.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",
./dhd_sdio - 副本 (2).c: if ((ret = dhd_bus_start(bus->dhd)) != 0) {
./dhd_sdio - 副本 (2).c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__));
./dhd_sdio - 副本 (2).c: DHD_ERROR(("Will call dhd_bus_start instead\n"));
./dhd_sdio - 副本 (2).c: if ((bcmerror = dhd_bus_start(dhdp)) != 0)
./dhd_sdio - 副本 (2).c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n",
./dhd.h:extern int dhd_bus_start(dhd_pub_t *dhdp);
./wl_android.c:/* Initialize g_wifi_on to 1 so dhd_bus_start will be called for the first
./dhd_linux.c: if ((ret = dhd_bus_start(&dhd->pub)) != 0) {
./dhd_linux.c: /* dhd_prot_init has been called in dhd_bus_start or wl_android_wifi_on */
./dhd_linux.c:dhd_bus_start(dhd_pub_t *dhdp)
rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$
定位到这里:
dhd_bus_start(dhd_pub_t *dhdp)
/* try to download image and nvram to the dongle */
if ((dhd->pub.busstate == DHD_BUS_DOWN) &&
(fw_path[0] != '\0') && (nv_path[0] != '\0')) {
#ifdef SHOW_NVRAM_TYPE
{ /* Show nvram type in the kernel log */
int i;
for (i = 0; nv_path[i] != '\0'; ++i) {
if (nv_path[i] == '.') {
break;
DHD_ERROR(("%s: nvram_type = [%s]\n", __FUNCTION__, &nv_path[i]));
#endif /* SHOW_NVRAM_TYPE */
/* wake lock moved to dhdsdio_download_firmware */
if (!(dhd_bus_download_firmware(dhd->pub.bus, dhd->pub.osh,
fw_path, nv_path, conf_path))) {
DHD_ERROR(("%s: dhdsdio_probe_download failed. firmware = %s nvram = %s config = %s\n",
__FUNCTION__, fw_path, nv_path, conf_path));
#ifdef DHDTHREAD
if (dhd->threads_only)
dhd_os_sdunlock(dhdp);
#endif /* DHDTHREAD */
// 2017/6/23 18:40 wenyuanbo download ap6212 fail not return error!!!!
//return -1;
return 0;
由于ap6212没有config.txt文件,下载肯定会出错,比对全志R16平台去AP6212的处理,关闭这里:
//return -1;
shell@astar-y3:/ $
shell@astar-y3:/ $ [ 110.012176] init: computing context for service '/system/bin/wpa_supplicant'
[ 110.025400] init: starting 'p2p_supplicant'
[ 110.039886] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010'
[ 110.119751] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin
[ 110.140144]
[ 110.140153] Dongle Host Driver, version 1.88.45.3 (r420671)
[ 110.140158] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04
[ 110.173523] wl_android_wifi_on in 1
[ 110.177409] wl_android_wifi_on in 2: g_wifi_on=0
[ 110.200103] gpio ap6xxx_wl_regon set val 1, act val 1
[ 110.280025] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expire
(编译请使用编译android的lichee的选项编译生成的.config文件,不然直接编译会报错!!!!)
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ tar zxvf lichee_parrotv1.1_20161202.tar.gz
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ cd lichee/
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh config
Welcome to mkscript setup progress
All available chips:
0. sun8iw5p1
Choice: 0
All available platforms:
0. android
1. dragonboard
2. linux
3. tina
Choice: 2
All available kernel:
0. linux-3.4
Choice: 0
All available boards:
0. bell-one
1. evb
2. evb-20
3. evb-30
4. evb-rtl8723bs
5. sc3813r
Choice: 3
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh
KCONFIG_AUTOCONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/auto.conf KCONFIG_AUTOHEADER=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/autoconf.h KCONFIG_TRISTATE=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/tristate.config BUILDROOT_CONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/.config /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/conf --silentoldconfig Config.in
# make dependencies written to .auto.deps
# ATTENTION buildroot devels!
# See top of this file before playing with this auto-preprequisites!
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot'
You must install 'makeinfo' on your build machine
makeinfo is usually part of the texinfo package in your distribution
make: *** [dependencies] 错误 1
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
ERROR: build buildroot Failed
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
d/buildroot-config/conf.o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/zconf.tab.o -o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buil
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ tar zxvf lichee_parrotv1.1_20161202.tar.gz
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ ll
总用量 10786992
drwx------ 4 rootroot rootroot 4096 5月 2 14:48 ./
drwxrwxrwx 18 rootroot rootroot 4096 5月 2 13:50 ../
-rwx------ 1 rootroot rootroot 8557328646 12月 2 16:08 android_parrotv1.1_20161202.tar.gz*
drwxrwxr-x 7 rootroot rootroot 4096 12月 2 15:52 lichee/
-rwx------ 1 rootroot rootroot 2488523424 12月 2 16:15 lichee_parrotv1.1_20161202.tar.gz*
drwxrwxr-x 8 rootroot rootroot 4096 5月 2 14:40 parrotv1p1_lichee/
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ cd lichee/
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ll
总用量 36
drwxrwxr-x 7 rootroot rootroot 4096 12月 2 15:52 ./
drwx------ 4 rootroot rootroot 4096 5月 2 14:48 ../
drwxrwxr-x 8 rootroot rootroot 4096 12月 2 15:51 brandy/
drwxrwxr-x 15 rootroot rootroot 4096 12月 2 15:52 buildroot/
-r-xr-xr-x 1 rootroot rootroot 55 12月 2 15:52 build.sh*
drwxrwxr-x 26 rootroot rootroot 4096 12月 2 15:52 linux-3.4/
-r--r--r-- 1 rootroot rootroot 232 12月 2 15:52 README
drwxrwxr-x 6 rootroot rootroot 4096 12月 2 15:51 .repo/
drwxrwxr-x 7 rootroot rootroot 4096 12月 2 15:52 tools/
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh config
Welcome to mkscript setup progress
All available chips:
0. sun8iw5p1
Choice: 0
All available platforms:
0. android
1. dragonboard
2. linux
3. tina
Choice: 2
All available kernel:
0. linux-3.4
Choice: 0
All available boards:
0. bell-one
1. evb
2. evb-20
3. evb-30
4. evb-rtl8723bs
5. sc3813r
Choice: 3
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh
KCONFIG_AUTOCONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/auto.conf KCONFIG_AUTOHEADER=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/autoconf.h KCONFIG_TRISTATE=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/tristate.config BUILDROOT_CONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/.config /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/conf --silentoldconfig Config.in
# make dependencies written to .auto.deps
# ATTENTION buildroot devels!
# See top of this file before playing with this auto-preprequisites!
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot'
You must install 'makeinfo' on your build machine
makeinfo is usually part of the texinfo package in your distribution
make: *** [dependencies] 错误 1
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
ERROR: build buildroot Failed
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
d/buildroot-config/conf.o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/zconf.tab.o -o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/conf
rm /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/zconf.tab.c
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot/package/config'
# configuration written to /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/.config
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
make:进入目录'/home/wwt/linux_r16/lichee/buildroot'
/usr/bin/make -j6 O=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot silentoldconfig
make[1]: 正在进入目录 `/home/wwt/linux_r16/lichee/buildroot'
GEN /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/Makefile
KCONFIG_AUTOCONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/auto.conf KCONFIG_AUTOHEADER=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/autoconf.h KCONFIG_TRISTATE=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/tristate.config BUILDROOT_CONFIG=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/.config /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/buildroot-config/conf --silentoldconfig Config.in
# make dependencies written to .auto.deps
# ATTENTION buildroot devels!
# See top of this file before playing with this auto-preprequisites!
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/buildroot'
You must install 'makeinfo' on your build machine
makeinfo is usually part of the texinfo package in your distribution
make: *** [dependencies] 错误 1
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
ERROR: build buildroot Failed
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ sudo apt-get install texinfo
[sudo] password for rootroot:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
fakeroot libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libfakeroot
Use 'apt-get autoremove' to remove them.
将会安装下列额外的软件包:
libencode-locale-perl libfile-listing-perl libfont-afm-perl libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl
libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libintl-perl libio-html-perl liblwp-mediatypes-perl liblwp-protocol-https-perl libnet-http-perl libtext-unidecode-perl libwww-perl
libwww-robotrules-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl
建议安装的软件包:
libdata-dump-perl libintl-xs-perl libcrypt-ssleay-perl libauthen-ntlm-perl texinfo-doc-nonfree
下列【新】软件包将被安装:
libencode-locale-perl libfile-listing-perl libfont-afm-perl libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl
libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libintl-perl libio-html-perl liblwp-mediatypes-perl liblwp-protocol-https-perl libnet-http-perl libtext-unidecode-perl libwww-perl
libwww-robotrules-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl texinfo
升级了 0 个软件包,新安装了 28 个软件包,要卸载 0 个软件包,有 737 个软件包未被升级。
需要下载 3,425 kB 的软件包。
解压缩后会消耗掉 13.0 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libencode-locale-perl all 1.03-1 [12.4 kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhttp-date-perl all 6.02-1 [10.4 kB]
获取:3 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libfile-listing-perl all 6.04-1 [9,774 B]
获取:4 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libfont-afm-perl all 1.20-1 [14.3 kB]
获取:5 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhtml-tagset-perl all 3.20-2 [13.5 kB]
获取:6 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhtml-parser-perl amd64 3.71-1build1 [98.2 kB]
获取:7 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libio-html-perl all 1.00-1 [15.7 kB]
获取:8 http://cn.archive.ubuntu.com/ubuntu/ trusty/main liblwp-mediatypes-perl all 6.02-1 [21.7 kB]
获取:9 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhttp-message-perl all 6.06-1 [78.7 kB]
获取:10 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhtml-form-perl all 6.03-1 [23.5 kB]
获取:11 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhtml-tree-perl all 5.03-1 [215 kB]
获取:12 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhtml-format-perl all 2.11-1 [44.7 kB]
获取:13 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhttp-cookies-perl all 6.00-2 [23.3 kB]
获取:14 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhttp-daemon-perl all 6.01-1 [17.0 kB]
获取:15 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libhttp-negotiate-perl all 6.00-2 [13.4 kB]
获取:16 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libintl-perl all 1.23-1build1 [1,204 kB]
获取:17 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libnet-http-perl all 6.06-1 [24.2 kB]
获取:18 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libwww-robotrules-perl all 6.01-1 [14.1 kB]
获取:19 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libwww-perl all 6.05-2 [146 kB]
获取:20 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main liblwp-protocol-https-perl all 6.04-2ubuntu0.1 [7,644 B]
获取:21 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libtext-unidecode-perl all 0.04-2 [115 kB]
获取:22 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libxml-namespacesupport-perl all 1.11-1 [13.2 kB]
获取:23 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libxml-sax-base-perl all 1.07-1 [21.5 kB]
获取:24 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libxml-sax-perl all 0.99+dfsg-2ubuntu1 [64.6 kB]
获取:25 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main libxml-libxml-perl amd64 2.0108+dfsg-1ubuntu0.1 [337 kB]
获取:26 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libxml-parser-perl amd64 2.41-1build3 [294 kB]
获取:27 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libxml-sax-expat-perl all 0.40-2 [11.5 kB]
获取:28 http://cn.archive.ubuntu.com/ubuntu/ trusty/main texinfo amd64 5.2.0.dfsg.1-2 [561 kB]
下载 3,425 kB,耗时 2秒 (1,303 kB/s)
Selecting previously unselected package libencode-locale-perl.
(正在读取数据库 ... 系统当前共安装有 213805 个文件和目录。)
Preparing to unpack .../libencode-locale-perl_1.03-1_all.deb ...
Unpacking libencode-locale-perl (1.03-1) ...
Selecting previously unselected package libhttp-date-perl.
Preparing to unpack .../libhttp-date-perl_6.02-1_all.deb ...
Unpacking libhttp-date-perl (6.02-1) ...
Selecting previously unselected package libfile-listing-perl.
Preparing to unpack .../libfile-listing-perl_6.04-1_all.deb ...
Unpacking libfile-listing-perl (6.04-1) ...
Selecting previously unselected package libfont-afm-perl.
Preparing to unpack .../libfont-afm-perl_1.20-1_all.deb ...
Unpacking libfont-afm-perl (1.20-1) ...
Selecting previously unselected package libhtml-tagset-perl.
Preparing to unpack .../libhtml-tagset-perl_3.20-2_all.deb ...
Unpacking libhtml-tagset-perl (3.20-2) ...
Selecting previously unselected package libhtml-parser-perl.
Preparing to unpack .../libhtml-parser-perl_3.71-1build1_amd64.deb ...
Unpacking libhtml-parser-perl (3.71-1build1) ...
Selecting previously unselected package libio-html-perl.
Preparing to unpack .../libio-html-perl_1.00-1_all.deb ...
Unpacking libio-html-perl (1.00-1) ...
Selecting previously unselected package liblwp-mediatypes-perl.
Preparing to unpack .../liblwp-mediatypes-perl_6.02-1_all.deb ...
Unpacking liblwp-mediatypes-perl (6.02-1) ...
Selecting previously unselected package libhttp-message-perl.
Preparing to unpack .../libhttp-message-perl_6.06-1_all.deb ...
Unpacking libhttp-message-perl (6.06-1) ...
Selecting previously unselected package libhtml-form-perl.
Preparing to unpack .../libhtml-form-perl_6.03-1_all.deb ...
Unpacking libhtml-form-perl (6.03-1) ...
Selecting previously unselected package libhtml-tree-perl.
Preparing to unpack .../libhtml-tree-perl_5.03-1_all.deb ...
Unpacking libhtml-tree-perl (5.03-1) ...
Selecting previously unselected package libhtml-format-perl.
Preparing to unpack .../libhtml-format-perl_2.11-1_all.deb ...
Unpacking libhtml-format-perl (2.11-1) ...
Selecting previously unselected package libhttp-cookies-perl.
Preparing to unpack .../libhttp-cookies-perl_6.00-2_all.deb ...
Unpacking libhttp-cookies-perl (6.00-2) ...
Selecting previously unselected package libhttp-daemon-perl.
Preparing to unpack .../libhttp-daemon-perl_6.01-1_all.deb ...
Unpacking libhttp-daemon-perl (6.01-1) ...
Selecting previously unselected package libhttp-negotiate-perl.
Preparing to unpack .../libhttp-negotiate-perl_6.00-2_all.deb ...
Unpacking libhttp-negotiate-perl (6.00-2) ...
Selecting previously unselected package libintl-perl.
Preparing to unpack .../libintl-perl_1.23-1build1_all.deb ...
Unpacking libintl-perl (1.23-1build1) ...
Selecting previously unselected package libnet-http-perl.
Preparing to unpack .../libnet-http-perl_6.06-1_all.deb ...
Unpacking libnet-http-perl (6.06-1) ...
Selecting previously unselected package libwww-robotrules-perl.
Preparing to unpack .../libwww-robotrules-perl_6.01-1_all.deb ...
Unpacking libwww-robotrules-perl (6.01-1) ...
Selecting previously unselected package libwww-perl.
Preparing to unpack .../libwww-perl_6.05-2_all.deb ...
Unpacking libwww-perl (6.05-2) ...
Selecting previously unselected package liblwp-protocol-https-perl.
Preparing to unpack .../liblwp-protocol-https-perl_6.04-2ubuntu0.1_all.deb ...
Unpacking liblwp-protocol-https-perl (6.04-2ubuntu0.1) ...
Selecting previously unselected package libtext-unidecode-perl.
Preparing to unpack .../libtext-unidecode-perl_0.04-2_all.deb ...
Unpacking libtext-unidecode-perl (0.04-2) ...
Selecting previously unselected package libxml-namespacesupport-perl.
Preparing to unpack .../libxml-namespacesupport-perl_1.11-1_all.deb ...
Unpacking libxml-namespacesupport-perl (1.11-1) ...
Selecting previously unselected package libxml-sax-base-perl.
Preparing to unpack .../libxml-sax-base-perl_1.07-1_all.deb ...
Unpacking libxml-sax-base-perl (1.07-1) ...
Selecting previously unselected package libxml-sax-perl.
Preparing to unpack .../libxml-sax-perl_0.99+dfsg-2ubuntu1_all.deb ...
Unpacking libxml-sax-perl (0.99+dfsg-2ubuntu1) ...
Selecting previously unselected package libxml-libxml-perl.
Preparing to unpack .../libxml-libxml-perl_2.0108+dfsg-1ubuntu0.1_amd64.deb ...
Unpacking libxml-libxml-perl (2.0108+dfsg-1ubuntu0.1) ...
Selecting previously unselected package libxml-parser-perl.
Preparing to unpack .../libxml-parser-perl_2.41-1build3_amd64.deb ...
Unpacking libxml-parser-perl (2.41-1build3) ...
Selecting previously unselected package libxml-sax-expat-perl.
Preparing to unpack .../libxml-sax-expat-perl_0.40-2_all.deb ...
Unpacking libxml-sax-expat-perl (0.40-2) ...
Selecting previously unselected package texinfo.
Preparing to unpack .../texinfo_5.2.0.dfsg.1-2_amd64.deb ...
Unpacking texinfo (5.2.0.dfsg.1-2) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for doc-base (0.10.5) ...
Processing 1 added doc-base file...
正在设置 libencode-locale-perl (1.03-1) ...
正在设置 libhttp-date-perl (6.02-1) ...
正在设置 libfile-listing-perl (6.04-1) ...
正在设置 libfont-afm-perl (1.20-1) ...
正在设置 libhtml-tagset-perl (3.20-2) ...
正在设置 libhtml-parser-perl (3.71-1build1) ...
正在设置 libio-html-perl (1.00-1) ...
正在设置 liblwp-mediatypes-perl (6.02-1) ...
正在设置 libhttp-message-perl (6.06-1) ...
正在设置 libhtml-form-perl (6.03-1) ...
正在设置 libhtml-tree-perl (5.03-1) ...
正在设置 libhtml-format-perl (2.11-1) ...
正在设置 libhttp-cookies-perl (6.00-2) ...
正在设置 libhttp-daemon-perl (6.01-1) ...
正在设置 libhttp-negotiate-perl (6.00-2) ...
正在设置 libintl-perl (1.23-1build1) ...
正在设置 libnet-http-perl (6.06-1) ...
正在设置 libwww-robotrules-perl (6.01-1) ...
正在设置 libtext-unidecode-perl (0.04-2) ...
正在设置 libxml-namespacesupport-perl (1.11-1) ...
正在设置 libxml-sax-base-perl (1.07-1) ...
正在设置 libxml-sax-perl (0.99+dfsg-2ubuntu1) ...
update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::PurePerl with priority 10...
update-perl-sax-parsers: Updating overall Perl SAX parser modules info file...
Creating config file /etc/perl/XML/SAX/ParserDetails.ini with new version
正在设置 libxml-libxml-perl (2.0108+dfsg-1ubuntu0.1) ...
update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX::Parser with priority 50...
update-perl-sax-parsers: Registering Perl SAX parser XML::LibXML::SAX with priority 50...
update-perl-sax-parsers: Updating overall Perl SAX parser modules info file...
Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version
正在设置 texinfo (5.2.0.dfsg.1-2) ...
Running mktexlsr. This may take some time. ... done.
正在设置 libwww-perl (6.05-2) ...
正在设置 liblwp-protocol-https-perl (6.04-2ubuntu0.1) ...
正在设置 libxml-parser-perl (2.41-1build3) ...
正在设置 libxml-sax-expat-perl (0.40-2) ...
update-perl-sax-parsers: Registering Perl SAX parser XML::SAX::Expat with priority 50...
update-perl-sax-parsers: Updating overall Perl SAX parser modules info file...
Replacing config file /etc/perl/XML/SAX/ParserDetails.ini with new version
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh
e.o -MD -MP -MF .deps/execute.Tpo -c -o execute.o execute.c
/usr/bin/gcc -std=gnu99 -I. -O2 -I/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/include -I/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/include -MT exitfail.o -MD -MP -MF .deps/exitfail.Tpo -c -o exitfail.o exitfail.c
In file included from clean-temp.h:22:0,
from clean-temp.c:23:
./stdio.h:456:1: error: 'gets' undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
mv -f .deps/exitfail.Tpo .deps/exitfail.Po
/usr/bin/gcc -std=gnu99 -I. -O2 -I/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/include -I/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/include -MT fatal-signal.o -MD -MP -MF .deps/fatal-signal.Tpo -c -o fatal-signal.o fatal-signal.c
mv -f .deps/c-ctype.Tpo .deps/c-ctype.Po
/usr/bin/gcc -std=gnu99 -I. -O2 -I/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/include -I/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/include -MT fd-safer-flag.o -MD -MP -MF .deps/fd-safer-flag.Tpo -c -o fd-safer-flag.o fd-safer-flag.c
mv -f .deps/c-stack.Tpo .deps/c-stack.Po
make[4]: *** [clean-temp.o] Error 1
make[4]: *** Waiting for unfinished jobs....
mv -f .deps/execute.Tpo .deps/execute.Po
mv -f .deps/fd-safer-flag.Tpo .deps/fd-safer-flag.Po
mv -f .deps/fatal-signal.Tpo .deps/fatal-signal.Po
mv -f .deps/gl_avltree_oset.Tpo .deps/gl_avltree_oset.Po
make[4]: Leaving directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-m4-1.4.15/lib'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-m4-1.4.15/lib'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-m4-1.4.15'
make[1]: *** [all] 错误 2
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-m4-1.4.15'
make: *** [/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-m4-1.4.15/.stamp_built] 错误 2
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
ERROR: build buildroot Failed
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ find . -name stdio.in.h
./out/sun8iw5p1/linux/common/buildroot/build/host-m4-1.4.15/lib/stdio.in.h
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
Z:\home\wwt\linux_r16\lichee\out\sun8iw5p1\linux\common\buildroot\build\host-m4-1.4.15\lib\stdio.in.h
// 2017/5/2 14:13 wenyuanbo add!!!!
//_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#if
defined
(__GLIBC__) && !
defined
(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
http://www.cnblogs.com/hjj801006/p/3988220.html
'gets' undeclared here (not in a function)
make[3]: Leaving directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/lib'
Making install in doc
make[3]: Entering directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/doc'
restore=: && backupdir=".am$$" && \
am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd . && \
rm -rf $backupdir && mkdir $backupdir && \
if (/bin/sh /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/build-aux/missing --run makeinfo --version) >/dev/null 2>&1; then \
for f in autoconf.info autoconf.info-[0-9] autoconf.info-[0-9][0-9] autoconf.i[0-9] autoconf.i[0-9][0-9]; do \
if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; \
done; \
else :; fi && \
cd "$am__cwd"; \
if /bin/sh /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/build-aux/missing --run makeinfo --no-split -I . \
-o autoconf.info autoconf.texi; \
then \
rc=0; \
CDPATH="${ZSH_VERSION+.}:" && cd .; \
else \
rc=$?; \
CDPATH="${ZSH_VERSION+.}:" && cd . && \
$restore $backupdir/* `echo "./autoconf.info" | sed 's|[^/]*$||'`; \
fi; \
rm -rf $backupdir; exit $rc
conftest.c:14625: must be after `@defmac' to use `@defmacx'
make[3]: *** [autoconf.info] Error 1
make[3]: Leaving directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/doc'
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65'
make[1]: *** [install] 错误 2
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65'
make: *** [/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/.stamp_host_installed] 错误 2
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
ERROR: build buildroot Failed
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ find . -name autoconf.texi
./out/sun8iw5p1/linux/common/buildroot/build/host-autoconf-2.65/doc/autoconf.texi
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
Z:\home\wwt\linux_r16\lichee\out\sun8iw5p1\linux\common\buildroot\build\host-autoconf-2.65\doc\autoconf.texi
@r{[}@var{\varname\}@r{]}@c
(修改为:)
@r{[}@var{\varname\}@r{]}
@r{[}@var{\varname\} = @samp{\default\}@r{]}@c
(修改为:)
@r{[}@var{\varname\} = @samp{\default\}@r{]}
http://blog.csdn.net/laohuang1122/article/details/44098291/
Ubuntu14.04编译Allwinner lichee 两个出错解决方法
libtool: install: ranlib /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/lib/libfakeroot.a
libtool: finish: PATH="/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/bin:/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin:/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/external-toolchain/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cm/cm/R58/r58_new20161012/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:/home/cm/cm/R58/r58_new20161012/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/opt/jdk1.6.0_45/bin:/opt/jdk1.6.0_45/jre/bin:/sbin" ldconfig -n /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/lib
----------------------------------------------------------------------
Libraries have been installed in:
/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin" || /bin/mkdir -p "/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin"
/bin/sh ./libtool --mode=install /usr/bin/install -c 'faked' '/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin/faked'
libtool: install: /usr/bin/install -c faked /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin/faked
make[3]:正在离开目录 `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-fakeroot-1.9.5'
make[2]:正在离开目录 `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-fakeroot-1.9.5'
make[1]:正在离开目录 `/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-fakeroot-1.9.5'
rm -rf /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
mkdir /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
cp package/makede
vs
/makede
vs
.c /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
cc -Wall -Werror -O2 /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
/makede
vs
.c -o /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
/makede
vs
/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
/makede
vs
.c: In function ‘main’:
/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
/makede
vs
.c:374:6: error: variable ‘ret’ set but not used [-Werror=unused-but-set-variable]
int ret = EXIT_SUCCESS;
cc1: all warnings being treated as errors
make: *** [/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
/makede
vs
] 错误 1
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
ERROR: build rootfs Failed
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ find . -name makede
vs
.c
./buildroot/package/makede
vs
/makede
vs
.c
./out/sun8iw5p1/linux/common/buildroot/build/host-makede
vs
/makede
vs
.c
./out/sun8iw5p1/linux/common/buildroot/build/busybox-1.18.3/miscutils/makede
vs
.c
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
http://blog.csdn.net/laohuang1122/article/details/44098291/
Ubuntu14.04编译Allwinner lichee 两个出错解决方法
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh
/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cm/cm/R58/r58_new20161012/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:/home/cm/cm/R58/r58_new20161012/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/opt/jdk1.6.0_45/bin:/opt/jdk1.6.0_45/jre/bin"" >> /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/_fakeroot.fs
chmod a+x /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/_fakeroot.fs
/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin/fakeroot -- /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/build/_fakeroot.fs
rootdir=/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/target
table='target/generic/
device
_table.txt'
Warning: skip syncing
-d /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/target /home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/images/rootfs.ext4 -N 1399 -b 42633
tune2fs 1.42.9 (4-Feb-2014)
Creating journal inode: 完成
This filesystem will be automatically checked every 20 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.
e2fsck 1.42.9 (4-Feb-2014)
文件系统缺少UUID;正在生成一个。
Adding dirhash hint to 文件系统.
/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/images/rootfs.ext4: clean, 1009/1440 files, 38102/42633 blocks
busybox directfb directfb-examples divine dosfstools e2fsprogs ethtool ext4-utils freetype fsck-msdos fuse-exfat libfuse i2c-tools input-tools iostat iperf iw jpeg libnl libpcap libpng memstat memtester ntfs-3g openssh openssl portmap strace stress sysstat szrz tcpdump tiobench tslib udev which wireless_tools wpa_supplicant zlib target-generic-hostname target-generic-issue target-generic-getty-busybox target-finalize target-purgelocales
/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/bin:/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/bin:/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/host/usr/sbin/:/home/wwt/linux_r16/lichee/out/sun8iw5p1/linux/common/buildroot/external-toolchain/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cm/cm/R58/r58_new20161012/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:/home/cm/cm/R58/r58_new20161012/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin:/opt/jdk1.6.0_45/bin:/opt/jdk1.6.0_45/jre/bin
make:离开目录“/home/wwt/linux_r16/lichee/buildroot”
INFO: build rootfs OK.
INFO: ----------------------------------------
INFO: build lichee OK.
INFO: ----------------------------------------
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$ ./build.sh pack
INFO: packing firmware ...
copying tools file
copying configs file
./out/aultls32.fex
./out/aultools.fex
./out/cardscript.fex
./out/cardtool.fex
./out/diskfs.fex
./out/env_burn.cfg
./out/env.cfg
./out/image.cfg
"./out/image_linux.cfg" -> "./out/image.cfg"
./out/split_xxxx.fex
./out/sys_config.fex
./out/sys_partition_dragonboard.fex
./out/sys_partition_dump.fex
./out/sys_partition.fex
"./out/sys_partition_linux.fex" -> "./out/sys_partition.fex"
./out/sys_partition_private.fex
./out/sys_partition_tina.fex
./out/test_config.fex
./out/usbtool.fex
./out/usbtool_test.fex
copying boot resource
copying boot file
packing for linux
normal
/home/wwt/linux_r16/lichee/tools/pack/pctools/linux/eDragonEx/
/home/wwt/linux_r16/lichee/tools/pack/out
Begin Parse sys_partion.fex
Add partion boot-resource.fex BOOT-RESOURCE_FEX
Add partion very boot-resource.fex BOOT-RESOURCE_FEX
FilePath: boot-resource.fex
FileLength=453400Add partion env.fex ENV_FEX000000000
Add partion very env.fex ENV_FEX000000000
FilePath: env.fex
FileLength=20000Add partion boot.fex BOOT_FEX00000000
Add partion very boot.fex BOOT_FEX00000000
FilePath: boot.fex
FileLength=c5a000Add partion rootfs.fex ROOTFS_FEX000000
Add partion very rootfs.fex ROOTFS_FEX000000
FilePath: rootfs.fex
FileLength=29a2400sys_config.fex Len: 0xf450
config.fex Len: 0x9ac8
split_xxxx.fex Len: 0x200
sys_partition.fex Len: 0xa80
boot0_nand.fex Len: 0x8000
boot0_sdcard.fex Len: 0x8000
u-boot.fex Len: 0xc4000
fes1.fex Len: 0x1fc0
usbtool.fex Len: 0x23000
aultools.fex Len: 0x26ead
aultls32.fex Len: 0x238dd
cardtool.fex Len: 0x14000
cardscript.fex Len: 0x6ea
sunxi_mbr.fex Len: 0x10000
dlinfo.fex Len: 0x4000
arisc.fex Len: 0x2ed88
vmlinux.fex Len: 0x2c78baa
boot-resource.fex Len: 0x453400
Vboot-resource.fex Len: 0x4
env.fex Len: 0x20000
Venv.fex Len: 0x4
boot.fex Len: 0xc5a000
Vboot.fex Len: 0x4
rootfs.fex Len: 0x29a2400
Vrootfs.fex Len: 0x4
BuildImg 0
Dragon execute image.cfg SUCCESS !
----------image is at----------
/home/wwt/linux_r16/lichee/tools/pack/sun8iw5p1_linux_evb-30_uart0.img
pack finish
rootroot@cm-System-Product-Name:/home/wwt/linux_r16/lichee$
Release date: December 11, 2006
Known bugs: none
Fixes/features added from previous release:
a) added support for multiple filters per process in
Vs
Drvr.dll
b) updated manual
Previous release 1.3.5
Release date: October 11th, 2005
Known bugs: none
Fixes/features added from previous release
a) added
Vs
SetWavelengthStep and
Vs
GetWavelengthStep functions
b) added
Vs
SetWavelengthWavesConfirm() function
c) fixed error-handling of
Vs
SetWavelength()
In earlier revisions, the error status light was cleared after a
Vs
SetWavelength() call failed, so the user did not see the light turn red to alert that an error had occurred. This has been fixed in 1.35 so the error light remains lit, and an error code is returned.
d) added range-check to
Vs
DefinePalette()
Previous revisions did not range-check the palette index number, and hard crashes could be produced if out-of-range values were supplied to this routine.
Previous release 1.33b
Release date: February 9, 2005
Known bugs: none
Fixes/features changed from previous release:
a) Fixed installer: programmers?guide (
vs
drvr.pdf) installed when SDK is selected.
Previous release 1.33a
Release date: January 10th, 2005
Known bugs:
i) SDK programmers?guide is not installed even if SDK is selected.
Fixes/features added from previous release
a)
Vs
Drvr.dll fixed handling of COMx ports that do not support 460kb
The autobaud sequence tries a variety of baud rates, some of which are not supported by RS-232 interfaces (but are supported on USB virtual COM ports). This was not handled properly, so if a call was made to
Vs
Open when no VariSpec was present, but a later call was made when a filter was present, the latter would fail.
b)
Vs
Gui added check of which COMx ports are present on computer
This program now filters its COMx list and only shows ports which actually exist; it used to show COM1 ?COM8 even if not all of these were present.
c)
Vs
Gui added automatic filter detection on Configure dialog
This checks all ports in turn, and reports the first detected filter. The search order is determined by the order in which the computer lists ports in the Registry.
d)
Vs
Gui changed to recognize filters as present while initializing
In prior revisions,
Vs
Gui would not report no filter found if a filter was present but still going through its power-up initialization. Now, a message box is posted to indicate that a filter was found, and the program checks whether initialization is complete, at 1 second intervals. When the filter is done initializing, the
Vs
Gui controls become active and report the filter information (serial number, wavelength range, etc).
e)
Vs
Gui added filter status item to Configure dialog
Adjacent the COMx combo box, there is now a text field that indicates filter status as 揘ot found? 揑nitializing? or 揜eady? This field is updated whenever the combo box selection is changed.
Previous release 1.32
Release date: July 27th, 2004
Known bugs: COMx port described above as 1.33 fix item a)
Fixes/features added from previous release
a)
Vs
Gui added a sweep feature to enable cycling the filter
The wavelength start, stop, and step are adjustable. Cycling can be done a fixed number of times or indefinitely.
Previous release 1.30
Release date: June 23rd, 2004
Known bugs: none
Fixes/features added from previous release
a) New commands
Vs
SetWaveplateAndWaves(),
Vs
GetWaveplateAndWaves(),
Vs
GetWaveplateLimits(), and
Vs
GetWaveplateStages() were added for support of variable retarder models.
b) New commands
Vs
SetRetries() and
Vs
SetLatencyMs() were added for control of serial port latency and automatic retry in case of error.
c) New commands
Vs
SetMode() and
Vs
GetMode() were added for control of the VariSpec filter抯 triggering and sweep modes
d) New command
Vs
GetSettleMs() was added to learn optics settling time
e) New commands
Vs
IsDiagnostic() and
Vs
IsEngagedInBeam() were added. These are reserved for CRI use and are not supported for use by end users.
f) The command syntax and functionality of the
Vs
SendCommand() function was changed - see description of this command for details
g) The
Vs
Gui program was modified to add sweep function, and the associated files were added to the file manifest.
The new functions are assigned higher ordinal numbers than the earlier commands, so the ordinal numbers assigned to routines in the earlier
Vs
Drvr routines are preserved. This means one may use the new
Vs
Drvr.dll file with applications that were developed and linked with the earlier release, without any need to recompile or relink the application.
Of course, to use the new functions one must link the application code with the new .lib file containing these functions.
Previous release: 1.20
Release date December 3rd, 2003
Known bugs:
a) there is a conflict when one uses the implicit palette to set wavelengths, and also defines palette states explicitly using the
Vs
DefinePalette() function. When the explicitly set palette state overwrites a palette state implicitly associated with a certain wavelength, that wavelength will not be accurately set when one issues the
Vs
SetWavelength() command. This is fixed in release 1.30
Fixes/features added from previous release
a) fixes bug with implicit palette in September 8 release
b) incorporates implicit retry for command send/reply if error in transmission
c) recognizes filters with serial numbers > 60000 (normally VariLC numbers)
d) supports binary transfer of >127 bytes
Previous release 1.11
Release date September 8, 2003
Known bugs
a) implicit palette can fail to create palette entry, causing tuning error
b)
Vs
SendBinary() fails if 128 chars or more sent (signed char error)
Fixes/features added from previous release
a) included
Vs
IsPresent() function omitted from function list of 1.10 release
Previous release 1.10
Release date: August 28th, 2003
Known bugs:
a)
Vs
IsPresent function not included ?generates 搖nresolved external?at link-time
Fixes/features added from previous release:
b) added command
Vs
EnableImplicitPalette() to code and documentation
added command
Vs
Connect() to code and documentation
added command
Vs
Close() to code and documentation
added local variable to avoid unnecessary querying of diagnostic status
documented that command
Vs
Connect() will not be supported in future
documented that command
Vs
Disconnect() will not be supported in future
documented that command
Vs
IsConnected() will not be supported in future
changed to Windows Installer from previous ZIP file
added table summary of commands to this manual
Previous release 1.00
Release date: November 5th, 2002
Known bugs:
a) none
Fixes/features added from previous release
b) n/a ?initial releaseDescription
This package provides a set of functions to control the VariSpec filter, which may be called from C or C++ programs. It incorporates all aspects of the filter communication, including low-level serial routines. With these routines, one can address the filter as a virtual object, with little need for detailed understanding of its behavior. This simplifies the programming task for those who want to integrate the VariSpec into larger software packages.
File manifest
All files are contained in a single installer file which includes the following:
vs
drvr.h declaration file
vs
drvr.lib library stub file
vs
drvr.dll run-time library
vs
drvr_r1p30.pdf (this file) release notes and programmer抯 guide
{sample program using
Vs
Drvr package}
registryAccess.cpp
registryAccess.h
resource.h
stdafx.h
Vs
ConfigDlg.cpp
Vs
ConfigfDlg.h
Vs
Gui.cpp
Vs
Gui.h
Vs
Gui.mak
Vs
Gui.rc
Vs
GuiDlg.cpp
Vs
GuiDlg.h
Vs
Sweep.cpp
Vs
Sweep.h
Development cycle
In order to use the DLL, one should take the following steps:
a) Add #include 搗sdrvr.h?statements to all files that access the VariSpec software
b) Add
vs
drvr.lib to the list of modules searched by the linker
c) Place a copy of
vs
drvr.dll in either the folder that includes the executable code for the program being developed; or, preferably, in the windows system folder.
Failures in step a) will lead to compiler errors; in step b) to linker errors; in step c) to a run-time error message that 揳 required .DLL file,
vs
drvr.dll, was not found?
VariSpec filter configuration
The VariSpec filter communicates via ASCII commands sent over an RS-232 interface or USB. The RS232 can operate at 9600 or 19,200 baud, while the USB appears as a virtual COMx
device
. While it appears to be present at either 9600 baud or 115.2 kbaud , the actual data transmission occurs at 12 MBaud over the USB.
Each command is terminated with an end-of-line terminator which can be either a carriage-return <c/r> or line feed <l/f>.
For RS-232 models, the baud rate and terminator character are selected using DIP switches inside the VariSpec electronics module. Default settings are 9600 baud, and the <c/r> character (denoted 慭r?in the C language).
For USB
device
s, the terminator is always <c/r>.
For latest information, or to determine how to alter the settings from the factory defaults, consult the VariSpec manual.
Timing and latency
The VariSpec filter takes a finite time to process commands, which adds an additional delay to that imposed by simple communication delays. In general, the time to process a given command is short except for the following operations:
?filter initialization
?wavelength selection
?palette definition
The first of these is quite lengthy (30 seconds or more) because it involves measurements and exercising of the liquid crystal optics. The latter two are much faster but still can take a significant amount of time (up to 300 ms) on the older RS-232 electronics due to the computations involved. On the newer, USB electronics, the latter two functions are completed in less than 5 ms.
For this reason, the functions that handle these actions offer the option of waiting until the action is complete before returning (so-called synchronous operation); although they can be called in an asynchronous mode where the function returns as soon as all commands have been sent to the VariSpec, without waiting for them to run to completion.
Another option is to use implicit palette tables. If this is enabled, by calling the
Vs
EnableImplicitPalette() function, the driver will define the settings for a given wavelength once, then saves the results within the VariSpec for faster access next time that wavelength is used. Subsequent access times are essentially instantaneous, until either all of the 128 palette states are in use, or the palette is cleared via the
Vs
ClearPalette() command.
The
Vs
IsReady() function can be used to determine whether a filter is done processing all commands. Ideally, one should check
Vs
IsReady() using a timer or the like to wait efficiently, so that the host PC is free to do other tasks while waiting for the VariSpec.
The VariSpec always processes each command to completion before starting on the next command, and it has a 256 byte input buffer, so there is no problem issuing several commands at once; they will all be executed, and in the order given.
This also indicates another way to coordinate one抯 program with the VariSpec filter: one can issue any of the
Vs
Getxxx() functions, which query the filter. Since these do not return until the filter has responded, one may be sure that there are no pending commands when the
Vs
Getxxx() function completes.
The
Vs
Drvr package provides for automatic re-try of commands up to 3 times, in the event that communications are garbled, and will wait up to 2 seconds for completion of serial commands. The number of retries can be set from 0 to 10, and the latency adjusted, if desired. However, there should be no need to do so. The hardware and software have been tested and observed to execute several million commands without a single communications error, so in practice the need for the retry protocol is very slight. Communication speed is not improved by reducing the latency, since commands proceed when all characters are received, and the latency time to time-out is only relevent when there is a communications lapse ?and as noted, these are very unlikely so the performance burden of retries should not be a practical consideration.
Multiple Filters and Multiple Processes
These routines only permit one VariSpec per process, and one process per VariSpec. So, these routines cannot control multiple filters at once from a single process; nor can several active processes seek to control the same filter at the same time.
The
Vs
Drvr package anticipates a future upgrade to enable control of multiple filters per process, so it makes use of an integer handle to identify which VariSpec is being controlled, even though (for now) only a single filter can be active. This handle is checked, and the correct handle must be used in all calls.
Program flow and sequence
Typical programs should use the following API calls
(all applications, upon initiating link to the filter)
?call
Vs
Open() to establish communications link (required)
?call
Vs
IsPresent() to confirm a filter is actually present
?call
Vs
IsReady() in case filter is still doing power-up sequence
<wait until no longer busy>
?call
Vs
GetFilterIdentity() to learn wavelength limits and serial number if needed
(if setting wavelengths via implicit palettes; recommended especially with older filters)
?call
Vs
EnableImplicitPalettes()
(to set wavelengths, either directly or via implicit palettes)
?call
Vs
SetWavelength() and
Vs
GetWavelength() to select and retrieve tuning
(if setting wavelengths by means of palettes, and managing palettes explicity)
?call
Vs
DefinePaletteEntry() and
Vs
ClearPalette() to define palette entries
?call
Vs
SetPalette() and
Vs
GetPalette() to select and retrieve palette state
(all applications, when done with the filter)
?call
Vs
Close() to release the communications link (required)
Sample program
Source code for a sample program,
Vs
Gui, is provided, which illustrates how to control a VariSpec filter using the
Vs
Drvr package. All filter control code lives in the
Vs
GuiDlg.cpp module, specifically in the Connect(), RequestToSetWavelength(), and
Vs
WriteTimerProc() functions. The latter two use a system timer to decouple the GUI from the actual filter control, for more responsive feedback to the user. Such an approach is unnecessary if palettes are used, which is preferable when one wishes the best real-time performance. See the VariSpec manual for further information.
Auxiliary commands
Certain commands are normally only used at the factory when filters are being built and configured, or in specialized configurations. These appear after the normal command set in the listing below.
Obsolescent commands
The
Vs
Connect(),
Vs
IsConnected(), and
Vs
Disconnect() functions are obsolescent. They are supported in this release, but will not necessarily exist in releases after 1.3x.
As they are obsolescent, they are not recommended for new code. These function calls are not documented further in this manual.Summary of commands
Normal Commands
Vs
ClearError(
vs
Hnd)
Vs
ClearPalette(
vs
Hnd)
Vs
ClearPendingCommands(
vs
Hnd)
Vs
Close(
vs
Hnd)
Vs
DefinePalette(
vs
Hnd, palEntry, wl)
Vs
EnableImplicitPalette(
vs
Hnd, isEnabled)
Vs
GetError(
vs
Hnd, *pErr)
Vs
GetFilterIdentity(
vs
Hnd, *pVer, *pSerno, *pminWl, *pmaxWl)
Vs
GetMode(
vs
Hnd, int *pMode)
Vs
GetPalette(
vs
Hnd, *ppalEntryNo)
Vs
GetSettleMs(
vs
Hnd, *psettleMs)
Vs
GetTemperature(
vs
Hnd, *pTemperature)
Vs
GetWavelength(
vs
Hnd, *pwl)
Vs
GetWavelengthAndWaves(
vs
Hnd, double *pWl, double *pwaves)
Vs
GetWaveplateLimits(
vs
Hnd, double *pminWaves, double *pmaxWaves)
Vs
GetWaveplateStages(
vs
Hnd, int *pnStages)
Vs
IsPresent(
vs
Hnd)
Vs
IsReady(
vs
Hnd)
Vs
Open(*p
vs
Hnd, portName, *pErrorCode)
Vs
SetLatencyMs(
vs
Hnd, nLatencyMs)
Vs
SetMode(
vs
Hnd, mode)
Vs
SetPalette(
vs
Hnd, palEntry)
Vs
SetRetries(
vs
Hnd, nRetries)
Vs
SetWavelength(
vs
Hnd, wl, confirm)
Vs
SetWavelengthAndWaves(
vs
Hnd, wl, waveplateVector)
Auxiliary commands
Vs
GetAllDrive(
vs
Hnd, *pStages, drive[])
Vs
GetNstages(
vs
Hnd, *pStages)
Vs
GetPendingReply(
vs
Hnd, reply, nChars, *pQuit, firstMs, subsequentMs)
Vs
GetReply(
vs
Hnd, reply, nChars, waitMs)
Vs
IsDiagnostic(
vs
Hnd)
Vs
IsEngagedInBeam(
vs
Hnd)
Vs
SendBinary(
vs
Hnd, bin[], nChars, clearEcho)
Vs
SendCommand(
vs
Hnd, cmd, sendEolChar)
Vs
SetStageDrive(
vs
Hnd, stage, drive)
Vs
ThermistorCounts(
vs
Hnd, *pCounts)
Alphabetical list of function calls
Syntax
Throughout this manual, the following conventions are used:
VS
DRVR_API Int32
Vs
Open(
VS
_HANDLE *
vs
Hnd,
LPCSTR port,
Int32 *pErrorCode
Bold text is used for function names
Italics indicate variables whose names (or values) are supplied by the user in their code
Name-mangling
The declaration file
vs
drvr.h includes statements that render the API names accurately in a C++ environment, i.e. free of the name-mangling decoration suffix that is normally added by C++ compilers. Thus the functions can be called freely from either C or C++ programs, using the names exactly as shown in this manual or in the
Vs
Drvr.h file.
Call and argument declarations
The call protocol type,
VS
DRVR_API, is declared in
vs
drvr.h, as are the types Int32 and
VS
_HANDLE.
Errors
All functions return an Int32 status value, which is TRUE if the routine completed successfully and FALSE if there was an error.
If there is an error in the
Vs
Open() function, the error is returned in *pErrorCode.
If there is an error in communicating with a filter after a successful
Vs
Open(), one should use the
Vs
GetError() function to obtain the specific error code involved. This function returns
VS
D_ERR_NOERROR if there is no error pending.
Main and auxiliary functions
The next section provides a description of the main functions, in alphabetic order; followed by the auxiliary functions, also in alphabetical order. In normal use, one will probably have no need for the auxiliary functions, but this list is provided for completeness.
VS
DRVR_API Int32
Vs
ClearError(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Purpose: this function clears any pending error on the VariSpec. This resets the error LED on the filter, and sets the pending error to
VS
_ERR_NOERROR.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
ClearPalette(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Function: clears all elements of the current filter palette and renders the current palette element un
defined
.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
ClearPendingCommands(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Function: clears all pending commands including any presently in-process
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
Close(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open(). May also be NULL, in which case all VariSpec filters are disconnected.
Function: Disconnects the filter.
Returns: TRUE if successful, FALSE otherwise
Notes: No other functions will work until
Vs
Open() is called to re-establish communications with the filter.
VS
DRVR_API Int32
Vs
DefinePalette(
VS
_HANDLE
vs
Hnd,
Int32 palEntry,
double wl)
Arguments:
vs
Hnd handle value returned by
Vs
Open()
palEntry palette entry to be
defined
, in the range [0, 127]
wl wavelength associated with this palette entry
Function: creates a palette entry for the entry and wavelength specified. This palette entry can then be accessed using
Vs
SetPalette() and
Vs
GetPalette() functions.
Returns: TRUE if successful, FALSE otherwise
Notes: palettes provide a fast way to define filter settings for wavelengths that are to be repeatedly accessed. The calculations are performed once, at the time the palette element is
defined
, and the results are saved in a palette table to tune to that wavelength without repeating the underlying calculations. And, one may cycle through the palette table, once
defined
, by means of TTL a trigger signal to the filter electronics.
For more information about using palettes, consult the VariSpec user抯 manual.
VS
DRVR_API Int32
Vs
EnableImplicitPalette(
VS
_HANDLE
vs
Hnd,
BOOL imlEnabled)
Arguments:
vs
Hnd handle value returned by
Vs
Open()
implEnabled selects whether to use implicit palette definition
Function: enables or disables implicit palette generation when wavelengths are
defined
using the
Vs
SetWavelength function. If enabled, a new palette entry is created whenever a new wavelength is accessed, and the
Vs
SetWavelength function will use this palette entry whenever that wavelength is accessed again, until the palette is cleared. The result is improved tuning speed; however, it means that the palette contents are altered dynamically, which can be a problem if one relies upon the palette contents remaining fixed.
Clearing the palette with
Vs
ClearPalette() will clear all implicit palette entries as well as explicitly
defined
palette entries. This is useful if one knows that wavelengths used previously will not be used again, or that a new set of wavelengths is about to be
defined
and one wishes to make sure there is sufficient room in the palette.
Returns: TRUE if successful, FALSE otherwise
Notes: By default, the implicit palette is enabled for VariSpec filters that have RS-232 interface, and is disabled for newer VariSpec filters that have the USB interface. This is because the newer filters perform the filter tuning calculations fast enough that no performance improvement is obtained by using the implicit palette to set wavelength.
For more information about using palettes, consult the VariSpec user抯 manual.
VS
DRVR_API Int32
Vs
GetError(
VS
_HANDLE
vs
Hnd,
Int32 *pErr)
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pErr pointer to the int that will receive the most recent error code
Purpose: this function clears any pending error on the VariSpec. This resets the error LED on the filter, and sets the pending error to
VS
_ERR_NOERROR.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetFilterIdentity(
VS
_HANDLE
vs
Hnd,
Int32 *pVer,
Int32 *pSerno,
double *pminWl,
double *pmaxWl
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pVer pointer to variable that receives the filter firmware version
pSerno pointer to variable that receives the filter serial number
pminWl pointer to variable that receives the filter抯 minimum wavelength
pmaxWl pointer to variable that receives the filter抯 maximum wavelength
Purpose: this function reads the filter抯 information using the VariSpec 慥?command, and puts it to the call variables. Any one of the pointers may be NULL, in which case that piece of information is not returned.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetMode(
VS
_HANDLE
vs
Hnd,
Int32 *pMode
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pMode pointer to variable that receives the filter mode
Purpose: this function enables one to read the filter抯 present mode. The mode describes how the filter responds to hardware triggers, and is described in the filter manual.
If the pointer *pMode is NULL, no information is returned.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetPalette(
VS
_HANDLE
vs
Hnd,
Int32 *ppalEntry
Arguments:
vs
Hnd handle value returned by
Vs
Open()
ppalEntry pointer to int that receives the 0-based palette entry number.
This pointer may not be NULL.
Purpose: this function determines what palette entry is currently active and returns it to *ppalEntry. If the present palette entry is un
defined
, it sets *ppalEntry to ? and returns a successful status code.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetSettleMs(
VS
_HANDLE
vs
Hnd,
Int32 *pSettleMs
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pSettleMs pointer to variable that receives the filter settling time
Purpose: this function returns the filter抯 settling time, in milliseconds. This is useful for establishing overall system timing. The settling time is
defined
as beginning at the moment that the electronics have processed the request to change wavelength, as determined by
Vs
IsReady() or equivalent. At that moment, the new set of drive signals are applied to the optics, and the optics will settle in *psettleMs milliseconds.
The settling time is
defined
as a 95% settling time, meaning the filter has settled to 95% of its ultimate transmission value at the new wavelength being tuned to.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetTemperature(
VS
_HANDLE
vs
Hnd,
double *pTemperature
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pTemperature pointer to double that will receive the filter temperature, in C
This pointer may not be NULL
Purpose: this function determines the filter temperature using the VariSpec 慪?command, and puts the result to *pTemperature.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetWavelength(
VS
_HANDLE
vs
Hnd,
double *pwl
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pwl pointer to double that will receive the filter wavelength, in nm
This pointer may not be NULL
Purpose: this function determines the current filter wavelength and returns it to *pwl. If the present wavelength is un
defined
, it sets *pwl to ? and returns a successful status code.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetWavelengthAndWaves(
VS
_HANDLE
vs
Hnd,
double *pwl,
double *pwaves
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pwl pointer to double that will receive the filter wavelength, in nm.
This pointer may not be NULL
pwaves pointer to double array that will receive one or more waveplate settings. The actual number of settings may be determined by
Vs
GetWaveplateStages().
Purpose: this function determines the current filter wavelength and returns it to *pwl. If the present wavelength is un
defined
, it sets *pwl to ? and returns a successful status code. If the present wavelength is
defined
, it also returns the waves of retardance at each of the polarization analysis waveplates in the optics, in the pwaves[] array.
Returns: TRUE if successful, FALSE otherwise
Notes: See the description of the
Vs
GetWaveplateStages() command for more detail on what stages are considered waveplates.
VS
DRVR_API Int32
Vs
GetWaveplateLimits(
VS
_HANDLE
vs
Hnd,
double *pminWaves,
double *pmaxWaves
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pminWaves pointer to double array that will receive the minimum retardances possible at each of the waveplate stages in the filter optics.
pmaxWaves pointer to double array that will receive the maximum retardances possible at each of the waveplate stages in the filter optics
Purpose: this function determines the range of retardances that are possible at each waveplate stage, in waves, at the present wavelength setting. Note that the retardance range is itself a function of wavelength, so the results will vary as the wavelength is changed.
Returns: TRUE if successful, FALSE otherwise
Notes: See the description of the
Vs
GetWaveplateStages command for more detail on what stages are considered waveplates.
VS
DRVR_API Int32
Vs
GetWaveplateStages(
VS
_HANDLE
vs
Hnd,
Int32 *pnwpStages
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pnwpStages pointer to Int32 that will receive the number of waveplate stages in the filter optics. This pointer may not be NULL
Purpose: this function determines how many polarization analysis stages are present in the optics and returns this number. Note that although all VariSpec filters operate by means of variable retarder element, optical stages that perform wavelength tuning rather than polarization analysis are not treated as waveplate stages.
For example, most VariSpec filters do not include any polarization analysis stages and thus report no waveplates.
Vs
GetWaveplateStages will return a value of 2 for conventional PolScope optics.
In contrast,
Vs
GetNstages() reports the total number of stages in a filter, including stages that perform polarization analysis and stages that perform wavelength tuning.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
IsPresent(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Function: determines whether a filter is actually present and responding. This is done using the status-check character ??as described in the VariSpec manual.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
IsReady(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Function: determines whether the filter is done processing all commands, and is ready to receive new commands.
Returns: TRUE if successful, FALSE otherwise
Notes: this is useful when sending commands such as
Vs
SetWavelength(),
Vs
Initialize(),
Vs
Exercise(), and
Vs
DefinePaletteEntry() in asynchronous mode. These commands take a prolonged time, and running them synchronously ties up the processor waiting. Alternatively, one can create a loop that uses CreateWaitableTimer(), SetWaitableTimer(), and WaitForSingleObject() to call
Vs
IsReady() at intervals, checking whether the filter is ready. This approach, though more work for the programmer, leaves most of the processor capacity free for other tasks such as GUI update and the like.
VS
DRVR_API Int32
Vs
Open (
VS
_HANDLE *p
vs
Hnd,
LPCSTR port,
Int32 *pErrorCode
Arguments:
p
vs
Hnd pointer to handle. This pointer may not be NULL.
port port name, such as 揅OM1?
pErrorCode pointer to Int32 to receive an error code if
Vs
Open() fails
Purpose: establishes a connection to the VariSpec using the port specified, and automatically determines the baud rate and end-of-line character for subsequent communications. It also retrieves the filter抯 serial number and wavelength range, to confirm that it is a VariSpec and not some other similar
device
. However, these are retrieved purely as an integrity check, and the values are not returned to the calling application. See
Vs
GetFilterInfo() to access this information.
If the
device
responds as a VariSpec does when it is not ready (i.e. still initializing),
Vs
Open() fails and returns the error code
VS
D_ERR_BUSY. However, one may not be sure that the
device
is a VariSpec until
Vs
Open() completes successfully
The error codes returned by this function are listed in
Vs
Drvr.h. When
Vs
Open() runs successfully, *pErrorCode is set to
VS
D_ERR_NOERROR.
The handle associated with this filter is set by
Vs
Open() to a nonzero handle value if successful, or to NULL if no connection is established.
The port may refer to COM1 through COM8.
Return: TRUE if successful, FALSE otherwise
Notes: Until this function is called, none of the other functions will work.
VS
DRVR_API Int32
Vs
SetLatency(
VS
_HANDLE
vs
Hnd,
Int32 latencyMs
Arguments:
vs
Hnd handle value returned by
Vs
Open()
latencyMs the serial port latency, in ms, in the range [1, 5000]
Purpose: this function sets the latency time for USB or RS-232 commands to the value given by latencyMs. Commands that do not conclude in this time are considered to have timed-out.
Returns: TRUE if successful, FALSE otherwise
Notes: increasing the latency time does not increase the time for commands to complete, nor does it insert any delays in normal processing. It merely defines the window for maximum transmission time, beyond which time an error is reported.
VS
DRVR_API Int32
Vs
SetPalette(
VS
_HANDLE
vs
Hnd,
Int32 palEntry
Arguments:
vs
Hnd handle value returned by
Vs
Open()
palEntry the palette entry to be set, in the range [0, 127]
Purpose: this function sets the filter to the palette entry specified by palEntry
Returns: TRUE if successful, FALSE otherwise
Notes: palettes are a good way to control the filter in applications where it will be cycled repeatedly to various, fixed wavelength settings. Palettes calculate the filter settings once, and save the results for rapid access later, rather than calculating them each time, as occurs when one sets the wavelength directly with
Vs
SetWavelength(). See the VariSpec manual for more information on palettes.
VS
DRVR_API Int32
Vs
SetRetries(
VS
_HANDLE
vs
Hnd,
Int32 nRetries
Arguments:
vs
Hnd handle value returned by
Vs
Open()
nRetries the number serial communications retries, in the range [0, 10]
Purpose: The
Vs
Drvr software automatically detects errors in communication and re-sends if an error is detected. This function sets the number of times to retry sending any single command, before reporting a communications failure. The default is 3, which should be adequate, and one should rarely need to change this, if ever. The primary purpose of this function is to enable setting the number of retries to zero, to force single-error events to cause detectable errors (as they would normally be fixed automatically via the retry mechanism)
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
SetWavelength(
VS
_HANDLE
vs
Hnd,
double wl,
BOOL confirm
Arguments:
vs
Hnd handle value returned by
Vs
Open()
wl wavelength to tune to, in nm
confirm logical flag, indicating whether to confirm actual wavelength value
Purpose: this function sets the filter wavelength to the value in wl. If confirm is TRUE, it waits for the filter to complete the command, and then reads back the actual wavelength to confirm it was implemented successfully. Note that the only time there can be a disparity is when the wavelength requested by wl lies outside the legal range for that filter, or if the wavelength is specified to a finer resolution than the filter recognizes (normally, 0.01 nm).
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetAllDrive(
VS
_HANDLE
vs
Hnd,
Int32 *pStages,
Int32 drive[]
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pStages pointer to int that will receive the number of stages in the filter
drive[] int array to receive the filter drive levels.
Purpose: this function reports the number of filter stages in *pStages. If this argument is NULL, it is ignored. The function returns the actual drive level at each stage, in counts, in drive[] , which must not be NULL.
Returns: TRUE if successful, FALSE otherwise
Notes: The array drive[] must be large enough to receive all the drive levels ?if the exact number of stages is not known, call
Vs
GetNstages() first, or allocate enough array elements (12) to accommodate the largest filter design.
VS
DRVR_API Int32
Vs
GetNstages(
VS
_HANDLE
vs
Hnd,
Int32 *pStages
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pStages pointer to int that will receive the number of stages in the filter
Purpose: this function determines the number of optical stages in the filter and returns it in *pStages, which may not be NULL.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
GetPendingReply(
VS
_HANDLE
vs
Hnd,
LPSTR reply,
Int32 nChars,
Int32 *pQuit,
Int32 firstMs,
Int32 subsequentMs
Arguments:
vs
Hnd handle value returned by
Vs
Open()
reply pointer to buffer that is to receive the reply
nChars number of characters to receive
pQuit pointer to flag to control this function ?see Notes below
firstMs maximum time to wait, in ms, for first character of reply
subsequentMs maximum time to wait, in ms, for each subsequent character
Purpose: this function is used to exploit some of the less-common aspects of the filter, and it is likely that most programs will require its use. It receives a reply from the filter that may not arrive for a long time. The routine waits up to firstMs for the first character to arrive. Subsequent characters must arrive within subsequentMs of one another. Typically, this routine is called with a high value for firstMs and a lower value for subsequentMs.
Returns: TRUE if successful, FALSE otherwise
Notes: pQuit can be used to cancel this function while it is waiting for the reply, if that is desired, such as to respond to a user cancellation request. To use this feature, pQuit must be non-NULL and *pQuit must be FALSE at the time
Vs
GetPendingReply() is called.
Vs
GetPendingReply() checks this address periodically, and if it discovers that *pQuit is TRUE, it will cancel and return immediately.
VS
DRVR_API Int32
Vs
GetReply(
VS
_HANDLE
vs
Hnd,
LPSTR reply,
Int32 nChars,
Int32 waitMs
Arguments:
vs
Hnd handle value returned by
Vs
Open()
reply pointer to buffer that will receive the filter reply
nChars the number of characters sought
waitMs the maximum time, in ms, to wait for the reply
Purpose: this function is used to exploit those filter commands that are not directly provided by other functions, and most programmers will not need to use it. If the reply is not received in the time indicated by waitMs, or if less than nChars are received, the function returns with an unsuccessful status code.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
IsDiagnostic(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Function: determines whether the filter is in the diagnostic mode that is used at the factory for setup and calibration. This command is reserved for CRI use only.
Returns: TRUE if diagnostic, FALSE otherwise.
VS
DRVR_API Int32
Vs
IsEngagedInBeam(
VS
_HANDLE
vs
Hnd
Arguments:
vs
Hnd handle value returned by
Vs
Open()
Function: determines whether the filter is engaged in the beam, when configured into certain CRI systems. This function is reserved for CRI use only
Returns: TRUE if engaged in the beam, FALSE otherwise
VS
DRVR_API Int32
Vs
SendBinary(
VS
_HANDLE
vs
Hnd,
char *bin,
Int32 nChars,
BOOL clearEcho
Arguments:
vs
Hnd handle value returned by
Vs
Open()
bin pointer a buffer that contains binary data to be sent to the filter
nChars the number of binary characters to be sent
clearEcho flag indicating whether to clear echo characters from the queue
Purpose: this routine sends binary blocks of data to the filter. This is only necessary when programming calibration data to the filter, and it is not anticipated that this function will be necessary in any normal use.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
SendCommand(
VS
_HANDLE
vs
Hnd,
LPCSTR cmd,
BOOL sendEolChar)
Arguments:
vs
Hnd handle value returned by
Vs
Open()
cmd pointer to the command to be sent to the filter
sendEolChar flag indicating whether to append the end-of-line character or not
Purpose: this function sends the command in cmd to the filter, and appends an end-of-line terminator (or not) based on sendEolChar. It automatically retrieves and discards the character echo of this command by the VariSpec. It does not automatically retrieve the reply, if any, from the VariSpec.
Returns: TRUE if successful, FALSE otherwise
Notes: The parameter sendEolChar should normally be true in all cases, unless one is sending individual character commands such as the ??or 慇?commands described in the VariSpec user抯 manual.
VS
DRVR_API Int32
Vs
SetStageDrive(
VS
_HANDLE
vs
Hnd,
Int32 stage,
Int32 drive
Arguments:
vs
Hnd handle value returned by
Vs
Open()
stage stage number whose drive level is to be adjusted
drive drive level, in counts, for that stage
Purpose: this function provides a way to manually adjust the drive levels at each of the filter抯 optical stages. It is normally used only during manufacture, and is not a function that most software programs will have any reason to use.
Returns: TRUE if successful, FALSE otherwise
Notes: none
VS
DRVR_API Int32
Vs
ThermistorCounts(
VS
_HANDLE
vs
Hnd,
Int32 *pCounts
Arguments:
vs
Hnd handle value returned by
Vs
Open()
pCounts pointer to int that will receive the thermistor signal, in counts
Purpose: this function provides a way to determine the signal level, in counts, at the thermistor. It is normally used only during manufacture, and is not a function that most software programs will have any reason to use.
Returns: TRUE if successful, FALSE otherwise
Notes: none
今天在把.pt文件转ONNX文件时,遇到此错误。
RuntimeError: Expected all tensors to be on the same
device
, but found at least two
device
s, cpu and cuda:0! (when checking argument for argument mat2 in method wrapper_mm)
代码中的Tensor**,一会在CPU中运行,一会在GPU中运行**,所以最好是都放在同一个devic
def load_data():
from keras.datasets import mnist
# global train_image, train_lable , test_image, test_lable
(train_image, train_lable), (test_image, test_lable) = mnist.load_data.
Unified Modeline Language (UML) xxi
Organization xxi
Additional Material and Author Contact xxi
PART I The Operating Environment (OE) 1
1 Introduction 3
1.1 Software Radios 3
1.1.1 Software Radio Aspects 4
1.2 The Software Communications Architecture 6
1.2.1 The Evolution of the SCA 6
1.2.2 What is the SCA? 9
1.2.3 Common SCA Perceptions 9
1.2.4 Why Use the SCA? 11
1.3 The Operating Environment 13
1.3.1 Conceptual Organization 14
1.3.2 OE Interface Constraints 14
1.4 The SCA Specification Structure 16
1.5 Summary 19
2 Operational Scenarios 21
2.1 Startup 22
2.2 Shutdown 26
2.3 Application (Un)Installation 28
2.4 Instantiate Application 30
2.5 Control Application 32
2.6 System Configuration 34
3 General Requirements and Services 37
3.1 Non-Functional Requirements 37
3.1.1 General Requirements 38
3.1.2 General Software Rules 39
3.1.3 Hardware Architecture Requirements 39
3.1.4 Interface Organization 40
3.2 Name Service 42
3.3 Event Service 44
3.3.1 Event Types 46
3.4 Log Service 47
3.4.1 Data Types 48
3.4.2 Exceptions 48
3.4.3 Types 50
3.4.4 LogStatus Operations 54
3.4.5 LogAdministrator Operations 56
3.4.6 LogProducer Operations 58
3.4.7 LogConsumer Operations 61
3.5 FileSystem 63
3.5.1 Exceptions 64
3.5.2 Types and Constants 64
3.5.3 Types 66
3.5.4 Operations 67
3.6 File 75
3.6.1 Exceptions 76
3.6.2 Attributes 77
3.6.3 Operations 78
4 Foundation Interfaces and Data Types 83
4.1 TestableObject 83
4.1.1 Exceptions 83
4.1.2 Operations 84
4.2 PortSupplier 86
4.2.1 Exceptions 87
4.2.2 Operations 87
4.3 LifeCycle 88
4.3.1 Exceptions 88
4.3.2 Operations 88
4.4 PropertySet 89
4.4.1 Exceptions 89
4.4.2 Operations 90
4.5 Resource 92
4.5.1 Exceptions 92
4.5.2 Attributes 93
4.5.3 Operations 93
4.6 ResourceFactory 95
4.6.1 Exceptions 95
4.6.2 Attributes 96
4.6.3 Operations 96
4.7 Port 99
4.7.1 Exceptions 101
4.7.2 Operations 102
5
Device
s and the
Device
Manager 105
5.1 Introduction 105
5.1.1 SCA
Device
Abstraction 106
5.2
Device
108
5.2.1 Exceptions 109
5.2.2 Types and Constants 109
5.2.3 Attributes 110
5.2.4 Operations 118
5.3 Loadable
Device
121
5.3.1 Types 122
5.3.2 Exceptions 123
5.3.3 Operations 123
5.4 Executable
Device
127
5.4.1 Types and Constants 127
5.4.2 Exceptions 128
5.4.3 Operations 130
5.5 Aggregate
Device
134
5.5.1 Types and Attributes 134
5.5.2 Operations 134
5.6
Device
Manager 135
5.6.1 Types 136
5.6.2 Attributes 137
5.6.3 Operations 140
6 Domain Management 151
6.1 DomainManager 151
6.1.1 Types 151
6.1.2 Exceptions 153
6.1.3 Attributes 155
6.1.4 DomainManager Instantiation 157
6.1.5 Operations 158
6.2 FileManager 178
6.2.1 Types 180
6.2.2 Exceptions 180
6.2.3 Operations 181
6.3 The ApplicationFactory 183
6.3.1 Exceptions 184
6.3.2 Attributes 184
6.3.3 Operations 185
6.4 Application 192
6.4.1 Types 192
6.4.2 Attributes 193
6.4.3 Operations 195
6.4.4 General Requirements 199
7 Operating Environment Security 201
7.1 Core Framework Security Requirements 201
7.1.1 Application 201
7.1.2 ApplicationFactory 202
7.1.3 DomainManager 203
8 Certification 205
8.1 Certification Process 205
8.2 Operating Environment Certification 206
8.2.1 OE-1 206
8.2.2 OE-2 208
8.2.3 OE-3 209
8.3 Waveform Assessment and Certification 210
PART II The Domain Profile 213
9 The Domain Profile 215
9.1 Overview 215
9.2 SCA Domain Profile XML 215
9.3 Domain Profile Data Types 218
10 Base Descriptor Files 219
10.1 Properties Descriptor 219
10.1.1 Simple 219
10.1.2 Simple Sequence 222
10.1.3 Struct 222
10.1.4 Struct Sequence 224
10.1.5 Test 224
10.2 softpkg 225
10.2.1 title 226
10.2.2 author 226
10.2.3 description 226
10.2.4 propertyfile 226
10.2.5 descriptor 227
10.2.6 implementation 227
10.3 Software Component Descriptor 230
10.4
Device
Package Descriptor 232
11
Device
Configuration Descriptor 235
11.1 Overview 235
11.2
device
configuration 235
11.2.1 description 236
11.2.2
device
managersoftpkg 236
11.2.3 componentfiles 236
11.2.4 partitioning 237
11.2.5 connections 239
11.2.6 domainmanager 239
11.2.7 filesystemnames 239
12 The Domain Manager Descriptor 241
12.1 Overview 241
13 The Software Assembly Descriptor 243
13.1 Overview 243
PART III Building an SCA-Compliant System 251
14 The POSIX Operating System 253
14.1 An Operating Environment 253
14.2 Linux 2.6 Kernel 256
14.2.1 Unavailable POSIX Calls 262
14.2.2 More Unavailable POSIX Calls 273
15 POSIX Threads 277
15.1 The Thread Object 278
15.2 Un-named Semaphores 282
15.3 Mutex Variables 285
15.4 Thread Attributes 290
15.5 Conditional Variables 295
15.6 Less Interesting Thread Calls 299
16 All ORBS are not Created Equal 303
16.1 CORBA Basics 305
16.1.1 Starting the Servant Object 307
16.1.2 Accessing the Object Reference 308
16.2 The Object Management Group 308
16.3 ‘C’ ORB versus C++ ORBs 310
16.4 Initial Services 311
16.4.1 Starting a Client 311
16.5 The Interface Repository 312
16.5.1 Type Codes 312
16.6 Minimum CORBA 313
16.7 The Portable Object Adapter (POA) 314
16.7.1 Policy 315
16.7.2 Run-time Performance 316
16.7.3 ORB Concurrency Models 317
16.7.4 One-ways, Two-ways, and Blocking 319
16.8 Real-time CORBA 319
16.9 Overview of Available ORBs 320
16.9.1 TAO ORB 320
16.9.2 ORBexpress 321
16.9.3 ORBit2 321
16.9.4 MICO 321
16.9.5 OMNI 322
17 The Services 325
17.1 Interoperable Naming Service 325
17.1.1 Universal Unique Identifiers 335
17.1.2 Core Framework Usage of the Naming Service 335
17.1.3 Application Usage of the Naming Service 336
17.2 Event Service 336
17.2.1 Core Framework Usage of the Event Service 349
17.2.2 Resource Usage of the Event Service 350
17.3 Log Service 350
17.3.1 Core Framework Usage of the Log Service 355
17.3.2 Resource Usage of the Log Service 357
18 Exploring the Domain 359
18.1 Application Factory Attributes 360
18.2 Application Attributes 362
18.3
Device
Manager Attributes 366
18.4
Device
Attributes 368
18.5 Aggregate
Device
Attributes 370
18.6 DomainManager Attributes 371
18.7 Properties 373
18.8 Manipulating Ports 378
18.9 Summary 378
19 An SCA-compliant Application 383
19.1 Hello World Legacy Application 383
19.2 Legacy Hello World SPD 388
19.3 HMI Applications 391
19.4 Shutting Down 396
19.5 An SCA-compliant Hello World Application 397
19.5.1 An SCA-compliant Terminal
Device
397
19.5.2 Domain Profile for Terminal
Device
405
19.5.3 An SCA-compliant Talk Application 409
19.5.4 Multi-threaded Servant 414
19.5.5 Talk Application XML 417
19.5.6 Modifications for Minimum CORBA Compliance 423
19.5.7 Concluding Remarks 424
Appendix A Mandatory POSIX Calls 427
Appendix B References to Part III 429
Index 431
最近在使用
python
过重遇到这个问题,NameError: name 'xxx' is not
defined
,在学习
python
或者在使用
python
的过程中这个问题大家肯定都遇到过,在这里我就这个问题总结以下几种情况:
错误NameError: name ‘xxx’ is not
defined
总结情况一:要加双引号(” “)或者(’ ‘)而没加情况二:字符缩进格式的问题情况三:`if __name__==’__main__’ :` 没有和`class类`进行对齐情况四:NameError: name ‘file’ is not
defined
情况五:NameError: name ‘模
最近在使用
python
写实验遇到这个问题:
NameError: name ‘xxx’ is not
defined
在学习
python
或者在使用
python
的过程中这个问题大家肯定都遇到过,在这里我就这个问题总结以下几种情况:
错误NameError: name ‘xxx’ is not
defined
总结
情况一:要加双引号(" ")或者(’ ')而没加
情况二:字符缩进格式的问题
情况三:if __name__=='__main__' : 没有和class类进行对齐
情况四:NameError: na
1.在使用前,忘记定义该变量(一般不会出现这种情况)
2.定义它的语句未被执行(这种现象常见于if-else语句中)
3.该变量是其他函数内变量,如果不重新对他们进行定义,就会出现所示的问题
1.用
Python
内置函数global把该变量变成全局变量
global it
2.若是由if-else语句未执行导致的,应尽可能补全在各种if条件下的该变量定义(习题1408 - 时间间隔获得的泪的教训)
Expected future:
基于PyTorch框架的torchvision
不正经的kimol君: