分类: Uncategorized

  • 内存一致性模型

    内存一致性模型 wiki

    http://preshing.com/20120913/acquire-and-release-semantics/

    Weak vs. Strong Memory Models

    那么为什么程序员需要关心SC呢

    锁的本质

    在现代多核多级缓存的处理器架构下,当一个cpu修改了其缓存的一个数据单元,主内存是如何感知,其他cpu又是如何感知的呢?

    目标,cpu内存模型最主要分两种内存模型

    强内存模型和弱内存模型,两者的主要区别在于是否允许cpu对主内存的修改即时可见,以及是否允许编译器内存访问指令重排序,目前大多cpu架构采 用弱模型,非即时可见,允许内存访问指令重排序。

    如下图:

    线程对共享变量的访问,并非直接访问共享内存,而是访问共享内存的一份copy,这份copy我们称它为工作内存(工作内存是概念上的区域,可以是寄存器上、cpu缓存、或者主内存,看具体的虚拟机实现及运行时优化)。

    l working memory

    线程访问实例变量、静态变量、数据对象元素(除局部变量和参数之外)都通过访问各自工作内存copy

    线程的工作内存之间是不可见

    线程之间变量的传递通过主内存

    既然在多线程下的内存模型类似于cpu->cpu缓存->主内存的三级模型,那么同样也存在上面内存共享的问题。换句话说同样存在以下问题:

    ü 一个线程在操作一个共享变量时,不受其它线程干扰(原子性)

    ü 一个线程改变了一个共享变量,其它线程如何及时看到(可见性)

    ü 如何保证多个线程有序地去操作共享变量(有序性)

  • Debian Wheezy: install ncmpcpp, Ncurses Based MPD Client

    # Install ncmpcpp client
    apt-get install ncmpcpp

    # Update config of ncmpcpp
    nano ~/.ncmpcpp/config
    mpd_host = “192.168.127.72”
    #
    mpd_port = “6600”
    #
    mpd_music_dir = “/share/mpd/music/”
    #
    mpd_connection_timeout = “5”
    #
    mpd_crossfade_time = “3”
    #
    ##### music visualizer #####
    ##
    ## Note: In order to make music visualizer work you’ll
    ## need to use mpd fifo output, whose format parameter
    ## has to be set to 44100:16:1. Example configuration:
    ## (it has to be put into mpd.conf)
    ##
    ##audio_output {
    ## type “fifo”
    ## name “My FIFO”
    ## path “/tmp/mpd.fifo”
    ## format “44100:16:1”
    ##}
    ##
    #
    visualizer_fifo_path = “/tmp/mpd.fifo”
    #
    ##
    ## Note: Below parameter is needed for ncmpcpp
    ## to determine which output provides data for
    ## visualizer and thus allow syncing between
    ## visualization and sound as currently there
    ## are some problems with it.
    ##
    #
    visualizer_output_name = “My FIFO”
    #
    ##
    ## Note: To enable spectrum frequency visualization
    ## you need to compile ncmpcpp with fftw3 support.
    ##
    #
    visualizer_type = “spectrum” (spectrum/wave)
    #
    ##### system encoding #####
    ##
    ## ncmpcpp should detect your charset encoding
    ## but if it failed to do so, you can specify
    ## charset encoding you are using here.
    ##
    ## Note: You can see whether your ncmpcpp build
    ## supports charset detection by checking output
    ## of `ncmpcpp –version`.
    ##
    ## Note: Since MPD uses utf8 by default, setting
    ## this option makes sense only if your encoding
    ## is different.
    ##
    #
    #system_encoding = “”
    #
    ##### delays #####
    #
    ## delay after playlist highlighting will be disabled (0 = don’t disable)
    #
    playlist_disable_highlight_delay = “5”
    #
    ## defines how long various messages are supposed to be visible
    #
    message_delay_time = “4”
    #
    ##### song format #####
    ##
    ## for song format you can use:
    ##
    ## %l – length
    ## %f – filename
    ## %D – directory
    ## %a – artist
    ## %t – title
    ## %b – album
    ## %y – year
    ## %n – track number (01/12 -> 01)
    ## %N – full track info (01/12 -> 01/12)
    ## %g – genre
    ## %c – composer
    ## %p – performer
    ## %d – disc
    ## %C – comment
    ## $R – begin right alignment
    ##
    ## you can also put them in { } and then it will be displayed
    ## only if all requested values are available and/or define alternate
    ## value with { }|{ } eg. {%a – %t}|{%f}
    ##
    ## Note: Format that is similar to “%a – %t” (i.e. without any additional
    ## braces) is equal to “{%a – %t}”, so if one of the tags is missing,
    ## you’ll get nothing.
    ##
    ## text can also have different color than the main window has,
    ## eg. if you want length to be green, write $3%l$9
    ##
    ## available values:
    ##
    ## – 0 – default window color (discards all other colors)
    ## – 1 – black
    ## – 2 – red
    ## – 3 – green
    ## – 4 – yellow
    ## – 5 – blue
    ## – 6 – magenta
    ## – 7 – cyan
    ## – 8 – white
    ## – 9 – end of current color
    ##
    ## Note: colors can be nested.
    ##
    #
    song_list_format = “{%a – }{%t}|{$8%f$9}$R{$3(%l)$9}”
    #
    song_status_format = “{{%a{ \”%b\”{ (%y)}} – }{%t}}|{%f}”
    #
    song_library_format = “{%n – }{%t}|{%f}”
    #
    tag_editor_album_format = “{(%y) }%b”
    #
    ##
    ## Note: Below variables are for alternative version of user’s interface.
    ## Their syntax supports all tags and colors listed above plus some extra
    ## markers used for text attributes. They are followed by character ‘$’.
    ## After that you can put:
    ##
    ## – b – bold text
    ## – u – underline text
    ## – r – reverse colors
    ## – a – use alternative character set
    ##
    ## If you don’t want to use an attribute anymore, just put it again, but
    ## this time insert character ‘/’ between ‘$’ and attribute character,
    ## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename
    ## with reversed colors.
    ##
    #
    #alternative_header_first_line_format = “$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b”
    #
    #alternative_header_second_line_format = “{{$4$b%a$/b$9}{ – $7%b$9}{ ($4%y$9)}}|{%D}”
    #
    ##
    ## Note: Below variables also supports
    ## text attributes listed above.
    ##
    #
    now_playing_prefix = “$b”
    #
    #now_playing_suffix = “$/b”
    #
    #browser_playlist_prefix = “$2playlist$9 ”
    #
    #selected_item_prefix = “$6”
    #
    #selected_item_suffix = “$9”
    #
    ## colors are not supported for below variable
    #
    #song_window_title_format = “{%a – }{%t}|{%f}”
    #
    ##### columns settings #####
    ##
    ## syntax of song columns list format is “column column etc.”
    ##
    ## – syntax for each column is:
    ##
    ## (width of column)[column’s color]{displayed tag}
    ##
    ## Note: Width is by default in %, if you want a column to
    ## have fixed size, add ‘f’ after the value, e.g. (10)[white]{a}
    ## will be the column that take 10% of screen (so the real column’s
    ## width will depend on actual screen size), whereas (10f)[white]{a}
    ## will take 10 terminal cells, no matter how wide the screen is.
    ##
    ## – color is optional (if you want the default one, type [])
    ##
    ## Note: You can give a column additional attributes by putting appropriate
    ## character after displayed tag character. Available attributes are:
    ##
    ## – r – column will be right aligned
    ## – E – if tag is empty, empty tag marker won’t be displayed
    ##
    ## E.g. {lr} will give you right aligned column of lengths.
    ##
    #
    song_columns_list_format = “(7f)[green]{l} (25)[cyan]{a} (40)[]{t} (30)[red]{b}”
    #
    ##### various settings #####
    #
    ##
    ## Note: Custom command that will be executed each
    ## time song changes. Useful for notifications etc.
    ##
    ## Attention: It doesn’t support song format anymore.
    ## Use `ncmpcpp –now-playing SONG_FORMAT` instead.
    ##
    #execute_on_song_change = “”
    #
    #playlist_show_remaining_time = “no”
    #
    playlist_display_mode = “columns” (classic/columns)
    #
    browser_display_mode = “classic” (classic/columns)
    #
    #search_engine_display_mode = “classic” (classic/columns)
    #
    #incremental_seeking = “yes”
    #
    #seek_time = “1”
    #
    #autocenter_mode = “no”
    #
    #centered_cursor = “no”
    #
    #progressbar_look = “=>”
    #
    #default_place_to_search_in = “database” (database/playlist)
    #
    user_interface = “classic” (classic/alternative)
    #
    #media_library_left_column = “a” (possible values: a,y,g,c,p, legend above)
    #
    default_find_mode = “wrapped” (wrapped/normal)
    #
    default_space_mode = “add” (add/select)
    #
    #default_tag_editor_left_col = “albums” (albums/dirs)
    #
    #default_tag_editor_pattern = “%n – %t”
    #
    header_visibility = “no”
    #
    statusbar_visibility = “no”
    #
    #header_text_scrolling = “yes”
    #
    #fancy_scrolling = “yes”
    #
    cyclic_scrolling = “no”
    #
    #lines_scrolled = “2”
    #
    follow_now_playing_lyrics = “no”
    #
    #ncmpc_like_songs_adding = “no” (enabled – add/remove, disabled – always add)
    #
    show_hidden_files_in_local_browser = “no”
    #
    #display_screens_numbers_on_start = “yes”
    #
    #jump_to_now_playing_song_at_start = “yes”
    #
    #ask_before_clearing_main_playlist = “no”
    #
    clock_display_seconds = “no”
    #
    #display_bitrate = “no”
    #
    #display_remaining_time = “no”
    #
    #regular_expressions = “basic” (basic/extended)
    #
    ##
    ## Note: If below is enabled, ncmpcpp will ignore leading
    ## “The” word while sorting items in browser, tags in
    ## media library, etc.
    ##
    #ignore_leading_the = “no”
    #
    #block_search_constraints_change_if_items_found = “yes”
    #
    #mouse_support = “yes”
    #
    #mouse_list_scroll_whole_page = “yes”
    #
    #empty_tag_marker = “”
    #
    #tag_editor_extended_numeration = “no”
    #
    #enable_window_title = “yes”
    #
    ##
    ## Note: These triggers will allow you to phisically remove
    ## files and directories from your hdd in using ncmpcpp’s
    ## browser screen.
    ##
    #
    allow_physical_files_deletion = “no”
    #
    allow_physical_directories_deletion = “no”
    #
    ##### lyrics support #####
    ##
    ## supported lyrics databases:
    ##
    ## – 1 – lyricsplugin.com
    ##
    #
    #lyrics_database = “1”
    #
    #external_editor = “”
    #
    #use_console_editor = “no” (set to yes, if your editor is console app)
    #
    ##### colors definitions #####
    #
    colors_enabled = “yes”
    #
    #empty_tag_color = “cyan”
    #
    #header_window_color = “default”
    #
    #volume_color = “default”
    #
    #state_line_color = “default”
    #
    #state_flags_color = “default”
    #
    #main_window_color = “yellow”
    #
    #color1 = “white”
    #
    #color2 = “green”
    #
    #main_window_highlight_color = “yellow”
    #
    #progressbar_color = “default”
    #
    #statusbar_color = “default”
    #
    #alternative_ui_separator_color = “black”
    #
    #active_column_color = “red”
    #
    #window_border_color = “green”
    #
    #active_window_border = “red”
    #

  • Debian Wheezy: Play music with mpd/mpc

    # Install mpd ( music play daemon )
    apt-get install mpd

    # Stop mpd service
    /etc/init.d/mpd stop

    # Update config of mpd
    nano /etc/mpd.conf
    music_directory = “/share/mpd/music”
    playlist_directory = “/share/mpd/playlists”
    db_file = “/share/mpd/tag_cache”
    log_file = “/share/mpd/mpd.log”
    pid_file = “/share/mpd/mpd”
    state_file = “/share/mpd/state”
    sticker_file = “/share/mpd/sticker.sql”
    user = “mpd”
    bind_to_address = “localhost”
    bind_to_address = “192.168.127.72”
    port = “6600”
    log_level = “default”
    follow_outside_symlink = “yes”

    # Install mpc ( music play client )
    apt-get install mpc

    # Launch mpd service
    /etc/init.d/mpt start

    # Update mpd DB
    mpc update

    # Create playlist to include all song
    mpc ls|mpc add

    # check mpd status
    mpc status

    # Check volume
    mpc volume

    # Start local Play
    mpc play

    # Start remote play
    mpc -h 192.168.127.27 play

    # Play next
    mpc next

    # Stop Play
    mpc stop

    # Mpd clients
    http://mpd.wikia.com/wiki/Clients

  • Debian Wheezy: Sound Card Config

    #Search audio device

    lspci -v |grep -i audio

     

    #Install alsa

    apt-get install alsa-base

     

    # Check audio

    modinfo soundcore

    modinfo snd

    modinfo snd-hda-intel

    modinfo snd-pcm-oss

    modinfo snd-mixer-oss

    alsamixer

     

    # Test Audio

    cd /usr/share/sounds/alsa

    aplay -vv Rear_Center.wav

     

     

  • Debian Wheezy: Setup RTL8192 USB wifi adaptor

    apt-get clear

    apt-get update

    apt-get install wireless-tools

    apt-get install wpasupplicant

    lsusb|grep -i wlan

    apt-cache search -i RTL8188CU

    apt-get install firmware-realtek

    dmesg|grep -i rtl

    iwlist scanning

    iwlist wlan0 scan|more

    nano /etc/network/interface

    auto wlan0
    iface wlan0 inet dhcp
            wpa-ssid               ‘my ssid’
            wpa-key-mgmt     WPA_PSK
            wpa-group            TKIP CCMP
            wpa-psk               ‘my password’

    /etc/init.d/networking restart

    ifconfig wlan0

  • Install NAS4Free on USB

    Download embedded image from sourceforge
    http://www.nas4free.org/downloads.html

    Copy to SD/USB device, /dev/sde
    gunzip -c NAS4Free-x86-embedded-9.1.0.1.761.img|dd of=/dev/sde bs=16k

    sudo sync

  • Miniand’s RK3066 Linux

     

     

  • 哪个好?猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    http://padhz.com/exynos-4412-tegra-3-rk3188.html

     

    顺应今年新的发展趋势,本土四核方案近期相继亮相,不过由于种种原因的限制,包括全志A31、炬力ATM7029、联发科MT6589在内均没有采 用高性能的Cortex A9架构,并且CPU频率均比较低,给人感觉在性能上跟之前的高主频双核没有拉开明显差距。瑞芯微电子作为国内老牌芯片厂商,此次厚积而勃发,也在今年初 带来了自家的四核新平台,代号RK3188的这款处理器应用高主频A9核心,28nm的先进工艺也达到了业界尖端水准。近期,该方案产品已经开始出货,在 对其首发机酷比魔方四核豌豆2进行完整测试后,我们不妨再把它和猎户座Exynos 4412、英伟达Tegra 3这两款知名四核处理器进行下对比,看下RK3188跟同类高端平台的较量。此次对比选用的产品分别是酷比魔方四核豌豆2、蓝魔W42和谷歌Nexus 7。

     

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    三个方案的基本参数如上表所示,部分细节规格以此次对应产品实际表现为准,不完全代表方案所有可能的配置。从对比来看,发布最晚的瑞芯微 RK3188在制程方面更为领先。工艺精细度越出色,CPU的功耗相应也越小,同时元器件尺寸集成度更高,也有利于性能的发挥。当然,三者是不同时期的产 品,RK3188在这方面领先也是顺理成章的。但也应该看到,相比本土同期推出的全志、炬力四核,瑞芯微新方案能够率先采用28nm工艺,还是相当引人关 注的。另外,除了制程的领先,RK3188主频也要更高一些,不过暂时并没能达到官方标称的1.8GHz,也许后续固件可能实现这个频率。图形核心方面, 瑞芯微继续沿用同型号的Mali系列GPU,不过进一步提升了频率,在跑分时可以达到600MHz,可惜实际使用时限制在了400MHz。其它方 面,RK3188的二级缓存不算大,内存位宽只有32bit比较遗憾,但对性能的影响应该比较有限。另外,1080P的硬解码性能倒依然很主流。单从参数 来分析的话,RK3188很像是频率增强版的猎户座处理器,细节方面倒是有一些不同。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    以上是对应三款产品的规格,四核豌豆2具备全高清屏幕,因此在接下来的性能比较方面会略受些影响。当然另外两个平台也有全高清屏的机型,可惜条件所 限不方便拿来对比。因此,涉及到流畅度方面的体验仅供初步参考。顺便要说的是,在频率调节机制方面,RK3188的最低主频比另外两个要高一些,相对而言 不利于降低待机功耗。内存大小是瑞芯微所选产品更占优(另外两个方案也可搭配2GB内存),硬件占去的空间比较大主要是因为屏幕分辨率高,在低分屏产品上 可用空间则会大出很多。

    硬件性能跑分对比:

    跑分可以直观显示新平台硬件性能的优劣,下面还是按部就班的来看一看:

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    安兔兔测试的跑分结果当中,RK3188的多项数据都占据领先优势,这应该和它的高频率、大内存有直接关系。不过同时应该看到,安兔兔这款软件虽然 在安卓产品评测时广泛使用,但它的版本更新频繁,测试标准也经常修改,不同版本间往往结果会有不小差异,因此它的公信力也并不那么高,权且看看就可以。另 外,测试用的版本是安兔兔3.2.1,相比之前3.1版安兔兔跑分略有下降,前版跑分可破18000大关,这是测试工具本身引起的差异。并且分辨率对跑分 也有些影响,在低分屏的原道N80四核RK上面3.2.1版安兔兔跑分能达到17319。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    NBench可以比较好的反映CPU真实能力,在这项测试中,RK3188的分数也明显要超过猎户座跟英伟达四核。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    NenaMark是针对GPU的测试,这款测试工具会受分辨率的压力影响,但在此情况下,RK3188高频率的GPU仍然跑出了接近自身屏幕刷新率极限的高分数,分辨率稍低的N80四核RK这项测试可到61.6帧,更为强劲。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    GLBenchmark测试中,1080P Offscreen项目的结果是统一在1080P分辨率环境下的数据,方便在不同平台间直接对比。从结果来看,RK3188的三个分项测试整体处于领先位置。

    单从跑分来看,RK3188基本上遥遥领先,这是它在采用主流Cortex A9架构的基础上,拥有高频率、大内存的直接结果,有力证明了RK3188的理论性能足够强劲,实际表现更多则看方案的优化了。比起低频率的Cortex A7或A5四核方案来说,瑞芯微四核从硬件基础上就占据了显著优势。

    稳定性对比:

    稳定性方面主要考验的是方案商的固件优化能力,具备Google官方支持的Nexus 7表现最为出色自然不用再多说,Tegra 3方案的产品曾经基本都是大厂的中高端机型,整体优化效果都还不错。猎户座Exynos 4412的产品表现则莫衷一是,此前三星自家Galaxy系列的四核平板或手机大多采用该处理器,整体表现还算比较好的。但国产的猎户座四核平板优化效果 要差不少,稳定性并不比新出来的RK3188平板好。就四核豌豆2这款产品来说,测试的几天内没有出现太大的BUG,倒是遇到过无线网络连接偶尔不正常的 小问题,而蓝魔W42多次出现锁屏界面操控失灵的现象。另一款RK3188平板原道N80四核RK整体运行也很稳定,证明了此次瑞芯微方案优化确实是比较 不错的。

    流畅度对比:

    流畅度虽是主观方面的体验,不过也可以量化成桌面帧率来对比。由于采用了全高清屏,RK3188的四核豌豆2桌面滑动帧率在50FPS左右,程序列 表界面还要低3~4帧。而Tegra 3的Nexus 7在桌面和列表界面的滑动帧率都能达到刷新率的极限,也就是稳定在60帧的水平,无疑要更加流畅一些。猎户座四核的蓝魔W42流畅度也比四核豌豆2要稍微 好一点,这则跟它的分辨率低有直接关系。在低分辨率的N80四核RK上面就流畅了很多,当然这不是说四核豌豆2用着就很卡,只是全高清屏的应用难免会降低 一些流畅度,在整体具备更高水平的横向对比中,还能看到存在进一步可改善的空间。

    影响流畅度的除了分辨率、硬件性能和系统优化效果外,应该还跟触控IC有关,因此即便同样平台下,不同厂商的产品由于用料的区别,在流畅度上也会有 所不同。应该说,RK3188还是提供了很不错的硬件基础,但要想做得更加流畅一些,最好还是不要采用太高分辨率的屏幕(但不排除后续优化可以更好支持全 高清或视网膜屏产品的可能)。而除了系统优化之外,加强触控IC的品质也有利于流畅度体验的提升。

    装卸软件速度表现:

    一些体积较大的Android程序在装卸过程中往往会有一段等待时间,影响这方面的显然主要是CPU性能,此外内存带宽和速度应该也有一定关系。针对这个项目,笔者选用几款体积比较大的程序来做下测试。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    安装大型软件速度最快的是蓝魔W42,这应该是发挥出了它双通道内存的优势。RK3188的机型在此项对比中不占优势,除了卸载速度比较快外,安装 大软件的速度比不上Tegra 3机型,估计是它的内存速度影响。其32bit DDR3-1066内存运行频率为528MHz,跟Nexus 7所用Tegra 3的667MHz DDR3-1333还有些差距。

    打开大体积PDF速度:

    接下来看看用同款阅读器(智阅)打开大体积PDF的速度表现,并比较一下在快速翻页时的新页面加载延迟快慢。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    也许是受高分屏的影响,加之内存性能的限制,在打开PDF速度方面比起前两个方案也没有大的优势,但差别非常细微(要明显快于全志、炬力四核)。实 际体验中如果不是拿来做仔细比对,基本上感觉不到这三款产品间的差异。而且它的翻页加载基本没有延迟,配合全高清屏幕看电子杂志的效果非常好。

    载入大游戏速度:

    接下来再看看载入大型游戏的速度表现——

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    载入大游戏的速度基本相仿,不具备明显区别。针对速度方面的测试总体看出,由于内存带宽和高分辨率屏幕的影响,虽然同样是Cortex A9四核处理器,瑞芯微RK3188的速度表现跟NVIDIA和三星四核相比并不占优,但差别并不大,也体现出较高的水准。

    网页性能:

    在浏览器的效果表现方面,由于系统自带浏览器针对多核有所优化,因此四核平台的产品表现都还是不错的。Nexus 7的自带浏览器是Chrome,不支持Flash,所以跟后两者对比起来不太合适。猎户座四核的W42网页浏览流畅度跟RK3188的四核豌豆2基本相 仿,后者滑动时Flash显示前的延迟更长一些,可能是跟高分屏下的渲染有关吧。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测
    土豆网的1080P原画视频在RK3188平板上可以流畅播放

    说到网页性能,不得不说的就是在线视频能力。瑞芯微在这方面的优化一直比较好,在RK3188上面也体现了出来,在Flash模式下,优酷超清、腾 讯超清、奇艺超清视频和土豆1080P原画都可以流畅播放,但也存在播放时间一长不太稳定的情况(偶尔白屏或加载缓慢),不过整体要好过Tegra 3跟猎户座四核是毫无疑问的。

    本地视频解码:

    三款方案均支持1080P视频硬解码,此次对比只选用了一组1080P及以上规格的极限测试片。RK3188方案的四核豌豆2集成有专用的视频播放器,而前两个平台所选产品没有专门软件,测试时使用安装的MXPlayer。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    在视频兼容方面显然还是本土方案更强劲,即便RK3188相比此前双核的RK3066在解码方面没有变化,可是比起两个外来的方案支持度无疑更好。不过还没能达到目前全志、炬力支持4K视频的水平。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    在细节选项方面,RK3188方案做的也算比较完善,虽不及全志、炬力那般花哨,但也拥有基本的字幕、音轨切换等选项,并且从RK3066起率先加入了浮动窗口视频播放的功能,在RK3188上面也继续将其沿用。

    游戏性能:

    前面已经说过,四核豌豆2的GPU只有在跑分测试时才会飙到600MHz频率,平时则是运行在400MHz(当然也有一些更低的档位)。因此,这样 看起来,它的理论性能还是比猎户座Exynos 4412稍弱一点。加之此次对比选用的机型采用了全高清屏幕,很大程度上影响了实际游戏的流畅度,好在兼容性方面基本没有什么明显问题。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    四核豌豆2运行极品飞车17效果很棒,平均30FPS以上的帧率要超过Nexus 7的25FPS和W42的27FPS。在对比中,还测试了现代战争4、Gangstar Rio、真实赛车3等几款游戏,四核豌豆2的帧率要比另外两款机型低一些。由于三款产品的屏幕分辨率差异比较大,这对游戏效果有着很直接的影响,因此这个 对比不能完全说明三者的游戏性能高低,仅供简单参照。待后续RK3188机型更加丰富时,我们可以再来看看它在低分屏机型上的实际游戏表现会有多大提升。

    功耗与发热:

    RK3188处理器在制程工艺方面比另外两款芯片更加先进,这对功耗控制也有直接的作用。首先我们来看看待机耗电情况的对比,从18:00关屏进入待机状态,到第二天10:00唤醒屏幕查看剩余电量,之后的半小时都保持屏幕长亮的状态,每十分钟查看一次实时电量。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    根据唤醒屏幕后的几次观察结果来看,三个机器电量监测都比较准确,不会有电量突降的现象。从18:00到第二天10:00这段时间的耗电分别对应 2%、6%和11%,RK3188的产品并未在待机功耗上占得优势,也许跟它的CPU最低主频较高有关系,即便在待机情况下,四核豌豆2的CPU频率也会 运行在312MHz,明显高过Nexus 7的51MHz和W42的200MHz。同时,电路设计和元件本身的选用也会影响待机功耗。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    再看续航表现,首先是统一采用GLBenchmark自带的电池测试工具,它可以循环运行一段复杂的画面,基本可以代表重度使用环境下(如持续玩大 型游戏)的续航状况。测试前,将产品都充了一夜电,确保电量达到100%状态。在开着WiFi的状态下,将亮度设为最高,清理无关进程,然后进行测试。以 上是这三款产品的测试结果,最后一项功耗指数是采用电池容量(mAh)直接除以续航时间(h)得出的结果,相当于看一下每小时耗电多少mAh。

    从结果来看,仍然是大厂机型Nexus 7的续航最长,这其实也是无可厚非的,毕竟CPU制程工艺只是其中一个影响因素。处理器频率、电路设计、屏幕配置、实际亮度、电池规格等方面都会造成影 响。这项测试对于四核豌豆2的考验显然会更大,它的屏幕分辨率比另外两款都要高出很多。尽管如此,单从时间上来看,四核豌豆2持续得仍然最长,即便套用此 次的功耗指数来看,也要比猎户座的W42更加省电。另外,在此前评测中单独对四核豌豆2的视频续航进行了测试,播放高码流的全高清影片能持续接近8个小时 半,表现相当出色。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    最后看下发热情况,以上温度数据是运行GLBenchmark续航测试半小时之后测得的结果,基本可以代表重度应用环境下的热量表现。不过这只是通 过红外温度计对主机表面测试的温度,显然要比芯片表面温度低不少。同时,影响温度表现的因素还有很多,除了芯片工艺外,模具的材质、散热结构设计等方面也 都会造成干扰。从初步测试的结果来看,RK3188机型只有37度,跟体温相仿,并不会觉得烫手。优化出色的Nexus 7温度也很低,只有本土猎户座机型测得的发热相对最明显。

    总结:

    本篇文章作为前段时间《国内外4款四核平板方案多方位对比》的延续,主要考察了最新亮相的RK3188方案跟两款主流四核A9处理器的表现异同,对比的项目也基本一致。

    猎户座Exynos 4412、英伟达Tegra 3和瑞芯微RK3188对比评测

    从多项对比结果来看,RK3188一定程度上展现了高主频Cortex A9的优势,采用28nm制程工艺也是很有远见卓识的选择,让其具备了叫板大厂高端芯片的能力。不过从规格解读的话,它的二级缓存稍低,内存带宽应对全高 清屏略显力不从心,GPU在跑分和游戏模式下频率差异也比较大。当然,对于一款新面世并将广泛普及的方案,它的优点也是很明显的,出色的续航和发热控制、 相比其它A7/A5四核更强劲的CPU性能、优秀的网页视频表现等等都值得肯定。瑞芯微方案一向在后期优化上比较出色,相信随着更多产品的登场,它的整体 表现会进一步提升。

    原文出自PB派,以上内容仅供参考,实际体验最重要。

  • Install netcore 337 driver under Ubuntu

    sudo apt-get install linux-backports-modules-cw-3.6-precise-generic
    
    This newer so-called compat-wireless driver is provided as a package in Ubuntu for convenience.
    
  • Adb driver on ubuntu 10.10

    lsusb
    sudo touch /etc/udev/rules.d/51-android.ruls
    sudo chmod 755
    gedit /etc/udev/rules.d/51-android.ruls
    sudo /etc/init.d/udev restart
    sudo adb kill-server
    sudo adb devices

    cat /etc/udev/rules.d/51-android.ruls

    SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0666″, GROUP=”lzheng”
    SUBSYSTEM==”usb”, SYSFS{idVendor}==”18d1″, MODE=”0666″, GROUP=”lzheng”
    SUBSYSTEM==”usb”, SYSFS{idVendor}==”05c6″, MODE=”0600″, GROUP=”lzheng”
    SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0600″, GROUP=”lzheng”
    SUBSYSTEM==”usb”, SYSFS{idVendor}==”710d”, MODE=”0600″, GROUP=”lzheng”
    SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0600″, GROUP=”lzheng”
    # adb protocol on passion (Nexus One)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e12″, MODE=”0600″, OWNER=”lzheng”
    # fastboot protocol on passion (Nexus One)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”0bb4″, ATTR{idProduct}==”0fff”, MODE=”0600″, OWNER=”lzheng”
    # adb protocol on crespo/crespo4g (Nexus S)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e22″, MODE=”0600″, OWNER=”lzheng”
    # fastboot protocol on crespo/crespo4g (Nexus S)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e20″, MODE=”0600″, OWNER=”lzheng”
    # adb protocol on stingray/wingray (Xoom)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”22b8″, ATTR{idProduct}==”70a9″, MODE=”0600″, OWNER=”lzheng”
    # fastboot protocol on stingray/wingray (Xoom)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”708c”, MODE=”0600″, OWNER=”lzheng”
    # adb protocol on maguro/toro (Galaxy Nexus)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”04e8″, ATTR{idProduct}==”6860″, MODE=”0600″, OWNER=”lzheng”
    # fastboot protocol on maguro/toro (Galaxy Nexus)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e30″, MODE=”0600″, OWNER=”lzheng”
    # adb protocol on panda (PandaBoard)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d101″, MODE=”0600″, OWNER=”lzheng”
    # fastboot protocol on panda (PandaBoard)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d022″, MODE=”0600″, OWNER=”lzheng”
    # usbboot protocol on panda (PandaBoard)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d00f”, MODE=”0600″, OWNER=”lzheng”
    # usbboot protocol on panda (PandaBoard ES)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”0451″, ATTR{idProduct}==”d010″, MODE=”0600″, OWNER=”lzheng”
    # adb protocol on grouper (Nexus 7)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e42″, MODE=”0600″, OWNER=”lzheng”
    # fastboot protocol on grouper (Nexus 7)
    SUBSYSTEM==”usb”, ATTR{idVendor}==”18d1″, ATTR{idProduct}==”4e40″, MODE=”0600″, OWNER=”lzheng”