导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    Gaviar Handheld (小志掌機)

    爱搞机专区
    25
    212
    278337
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • steward
      司徒 LV 7 最后由 编辑

      那司徒要幹嘛呢?CASIO CG-300 (Western Bar) 是司徒的人生第一台掌機,司徒相要幫它換裝一下,先看一下 PCB
      1.jpg

      背面
      2.jpg

      FPC
      3.jpg

      司徒依據走線補線,然後,要怎麼換裝呢?先賣個關子,等之後改好在分享給大家~哈
      4.jpg

      Z 1 条回复 最后回复 回复 引用 分享 0
      • Z
        zb8321 LV 2 @steward 最后由 编辑

        @steward 司徒大大您好,因不知联系方式抱歉在此讨教个问题:mbook m1这款机型遇到了跟您一样的情况,到手后可以启动但4个存储颗粒遭到物理破坏(拥有这款机型的人报废方式好奇怪)。看您尝试将m1颗粒移植到bx4上,因为我的电路板没有损坏迹象,想问下更换颗粒后是否还需量产/开卡,还是说主控可以自动识别。如果需要量产,能否给个相关软体和操作步骤。若不便在此展开,我的邮箱是jhangbai@gmail.com。最后感谢您网路知识分享,受益良多!!

        steward 1 条回复 最后回复 回复 引用 分享 0
        • R
          RoseJay LV 1 最后由 编辑

          👍 👍

          1 条回复 最后回复 回复 引用 分享 0
          • Z
            zb8321 LV 2 @Percival 最后由 编辑

            @percival 你好,请问能否给D8的刷机包,我的症状跟你一模一样。D88的刷机包无法使用,虽然配置差不多但还是有差异。感谢!jhangbai@gmail.com

            1 条回复 最后回复 回复 引用 分享 0
            • steward
              司徒 LV 7 @zb8321 最后由 编辑

              @zb8321
              在這邊討論就可以,我當初是直接換原本另一台可以正常使用的 NAND Flash,所以沒有量产/开卡的動作,開機後,BIOS 可以識別,不過,你應該可以直接焊上去,然後看 BIOS 有沒有辦法識別到你更換的容量,我當初並沒有下載使用量产/开卡的軟件

              Z 1 条回复 最后回复 回复 引用 分享 0
              • Z
                zb8321 LV 2 @steward 最后由 编辑

                @steward 是这样,看您在网站上提到有嘗試更新SSD Firmware,于是才来请教是什么韧体。我只找到了这个主控cf卡的开卡工具,而这个板载的ssd看不出是否设计了跳线。打开开卡工具,短接损坏的颗粒开卡脚位也搜不到任何硬碟设备。由于本人没焊过sop48,所以没把握的话就只能选择usb方案了。我之前也是直插usb随身碟的方式把玩,就是速度感人。

                steward 1 条回复 最后回复 回复 引用 分享 0
                • steward
                  司徒 LV 7 @zb8321 最后由 编辑

                  @zb8321
                  參考網址:https://steward-fu.github.io/website/umpc/bx407a4_usb.htm

                  不好意思,我記錯,那個 SM232 SSD Firmware 就是開卡軟件,我當初有使用,但是我的機器還是無法寫入,最後我才改用 USB 開機,只是當初沒有把軟件留下來,這樣看來你可以焊接試試,我當初的機器是很悽慘的,走線被割斷很多條
                  1.jpg

                  所以才使用替換法試試,使用吸錫線就可以很容易焊接成功,不行的話,你只能拿去手機行
                  2.jpg

                  Z 1 条回复 最后回复 回复 引用 分享 1
                  • Z
                    zb8321 LV 2 @steward 最后由 编辑

                    @steward 吸锡线我记下了。我的情况应该比大大的要好点,这款机型的机主们宁愿拆机去破坏NAND也不舍得一锤子解决问题。另外您确定软体是sm223吗,因为这个主控是sm2231t,软体的话倒是sm223 sm2231都有见过
                    QQ图片20261004190422.png

                    steward 1 条回复 最后回复 回复 引用 分享 0
                    • steward
                      司徒 LV 7 @zb8321 最后由 编辑

                      @zb8321
                      哈~我癡呆了,我記成 Onkyo BX407A4 機器,MBook M1 確實是 SM2231T,那就期待你的好消息~

                      Z 1 条回复 最后回复 回复 引用 分享 1
                      • Z
                        zb8321 LV 2 @steward 最后由 编辑

                        @steward 感谢大大。我还以为这两个板型差不多呢,都是umid的,原来主控不同

                        1 条回复 最后回复 回复 引用 分享 1
                        • steward
                          司徒 LV 7 最后由 steward 编辑

                          小志掌機的顯示驅動還是持續開發測試中,司徒剛好有時間來移植 FunKey-OS 裡面的 RetroFE 主介面,試試運行在小志掌機的顯示效果

                          $ cd
                          $ git clone https://github.com/FunKey-Project/RetroFE --depth=1
                          $ git clone https://github.com/FunKey-Project/FunKey-OS --depth=1 -b DrUm78
                          

                          除了背景,前景圖片不要拉伸

                          diff --git a/RetroFE/Source/Graphics/PageBuilder.cpp b/RetroFE/Source/Graphics/PageBuilder.cpp
                          index 17451b5..ad20a97 100755
                          --- a/RetroFE/Source/Graphics/PageBuilder.cpp
                          +++ b/RetroFE/Source/Graphics/PageBuilder.cpp
                          @@ -203,8 +203,8 @@ Page *PageBuilder::buildPage( std::string collectionName )
                                           return NULL;
                                       }
                           
                          -            scaleX_ = (float)screenWidth_ / (float)layoutWidth;
                          -            scaleY_ = (float)screenHeight_ / (float)layoutHeight;
                          +            scaleX_ = 1;//(float)screenWidth_ / (float)layoutWidth;^M
                          +            scaleY_ = 1;//(float)screenHeight_ / (float)layoutHeight;^M
                           
                                       std::stringstream ss;
                                       ss << layoutWidth << "x" << layoutHeight << " (scale " << scaleX_ << "x" << scaleY_ << ")";
                          

                          修改資源路徑

                          diff --git a/RetroFE/Source/Menu/MenuMode.cpp b/RetroFE/Source/Menu/MenuMode.cpp
                          index 8cce5c7..0a33358 100755
                          --- a/RetroFE/Source/Menu/MenuMode.cpp
                          +++ b/RetroFE/Source/Menu/MenuMode.cpp
                          @@ -35,15 +35,15 @@
                           #define MENU_BG_SQURE_WIDTH         180
                           #define MENU_BG_SQUREE_HEIGHT       140
                           
                          -#define MENU_FONT_NAME_TITLE        "/usr/games/menu_resources/OpenSans-Bold.ttf"
                          +#define MENU_FONT_NAME_TITLE        "/boot/RetroFE/menu_resources/OpenSans-Bold.ttf"
                           #define MENU_FONT_SIZE_TITLE        22
                          -#define MENU_FONT_NAME_INFO         "/usr/games/menu_resources/OpenSans-Bold.ttf"
                          +#define MENU_FONT_NAME_INFO         "/boot/RetroFE/menu_resources/OpenSans-Bold.ttf"
                           #define MENU_FONT_SIZE_INFO         16
                          -#define MENU_FONT_NAME_SMALL_INFO   "/usr/games/menu_resources/OpenSans-Regular.ttf"
                          +#define MENU_FONT_NAME_SMALL_INFO   "/boot/RetroFE/menu_resources/OpenSans-Regular.ttf"
                           #define MENU_FONT_SIZE_SMALL_INFO   13
                          -#define MENU_PNG_BG_PATH            "/usr/games/menu_resources/zone_bg.png"
                          -#define MENU_PNG_ARROW_TOP_PATH     "/usr/games/menu_resources/arrow_top.png"
                          -#define MENU_PNG_ARROW_BOTTOM_PATH  "/usr/games/menu_resources/arrow_bottom.png"
                          +#define MENU_PNG_BG_PATH            "/boot/RetroFE/menu_resources/zone_bg.png"
                          +#define MENU_PNG_ARROW_TOP_PATH     "/boot/RetroFE/menu_resources/arrow_top.png"
                          +#define MENU_PNG_ARROW_BOTTOM_PATH  "/boot/RetroFE/menu_resources/arrow_bottom.png"
                          

                          關閉聲音設定

                          diff --git a/RetroFE/Source/Utility/Utils.h b/RetroFE/Source/Utility/Utils.h
                          index b97612b..8018e3f 100755
                          --- a/RetroFE/Source/Utility/Utils.h
                          +++ b/RetroFE/Source/Utility/Utils.h
                          @@ -23,8 +23,8 @@
                           #define SHELL_CMD_ROOTFS_RW             "rw"
                           #define SHELL_CMD_ROOTFS_RO             "ro"
                           #define SHELL_CMD_PID_RECORD            "pid record"
                          -#define SHELL_CMD_AUDIO_AMP_ON          "audio_amp on"
                          -#define SHELL_CMD_AUDIO_AMP_OFF         "audio_amp off"
                          +#define SHELL_CMD_AUDIO_AMP_ON          "" //audio_amp on"^M
                          +#define SHELL_CMD_AUDIO_AMP_OFF         "" //audio_amp off"^M
                           #define SHELL_CMD_MAPPING_ROM           "keymap rom"
                           #define SHELL_CMD_MAPPING_DEFAULT       "keymap default"
                          

                          編譯

                          $ cd RetroFE
                          $ cmake \
                              RetroFE/Source \
                              -BRetroFE/Build \
                              -DVERSION_MAJOR=0 \
                              -DVERSION_MINOR=0 \
                              -DVERSION_BUILD=0 \
                              -DCMAKE_TOOLCHAIN_FILE=/opt/gaviar/share/buildroot/toolchainfile.cmake
                          
                          $ cmake --build RetroFE/Build
                          $ file RetroFE/Build/retrofe 
                              RetroFE/Build/retrofe: ELF 64-bit LSB pie executable, UCB RISC-V
                          

                          複製到MicroSD

                          $ mkdir /xxx/SDCARD/RetroFE
                          $ cp RetroFE/Build/retrofe /xxx/SDCARD/RetroFE
                          $ cp -a ~/FunKey-OS/FunKey/board/funkey/rootfs-overlay/usr/games/* /xxx/SDCARD/RetroFE
                          

                          修改設定

                          $ vim /xxx/SDCARD/RetroFE/settings.conf
                              horizontal = 320
                              baseItemPath=/boot/roms
                          

                          開機後執行

                          $ mount -o remount,rw /boot
                          $ cd /boot/RetroFE
                          $ SDL_NOMOUSE=1 SDL_VIDEODRIVER=fbcon ./retrofe
                          

                          完成
                          1.jpg

                          前景圖片沒有拉伸,看起來就是舒服~
                          2.jpg
                          P.S. 測試檔案 https://github.com/steward-fu/website/releases/download/gaviar/retrofe_test_20261011.img

                          1 条回复 最后回复 回复 引用 分享 1
                          • steward
                            司徒 LV 7 最后由 steward 编辑

                            由於小志掌機是基於全志 F133,也就是 RISC-V 核心,因此,司徒無意間注意到一款相當迷你的 RISC-V 模擬器 (mini-rv32ima),Repo 是 https://github.com/cnlohr/mini-rv32ima, 這款迷你 RISC-V 模擬器被移植到相當多的低階晶片上,例如:ESP32,參考的 Repo 有:https://github.com/kangz543g/ESP32C3_RV32IMA_LINUX, https://github.com/xhackerustc/uc-rv32ima, https://github.com/verylowfreq/linux_on_m5stack, 為此,司徒也想來試試這款模擬器的魅力~

                            mini-rv32ima
                            1.jpg
                            2.jpg

                            linux_on_m5stack
                            1.jpg

                            司徒的 ESP32-C3 開發板
                            3.jpg

                            腳位
                            4.jpg

                            司徒使用的 PSRAM64H
                            5.jpg

                            焊接完成
                            6.jpg

                            司徒焊接 PSRAM64H 的腳位資訊

                            PSRAM64H_MOSI   ESP32_GPIO_1
                            PSRAM64H_MISO   ESP32_GPIO_2
                            PSRAM64H_CS     ESP32_GPIO_9
                            PSRAM64H_SCLK   ESP32_GPIO_0
                            

                            編譯

                            $ git clone https://github.com/xhackerustc/uc-rv32ima -b 3e062c59acf745b39be63b86a8e6afad71d27ce8
                            $ cd uc-rv32ima
                            $ idf.py set-target esp32c3
                            $ vim main/CMakeLists.txt
                                target_compile_options(${COMPONENT_LIB} PRIVATE -w)
                            $ idf.py reconfigure
                            $ idf.py menuconfig
                                Serial flasher config  ---> Flash size (4 MB)
                                Component config → ESP System Settings → [] Enable Task Watchdog Timer
                            
                            $ vim main/port-esp.c
                                206 psram_write(addr, dmabuf, 64);
                                213 psram_write(addr, dmabuf, flen);
                            
                            $ vim main/port-esp.c
                                43 #define GPIO_MOSI   1
                                44 #define GPIO_MISO   2
                                45 #define GPIO_CS     9
                                46 #define GPIO_SCLK   0
                                47 #define SPI_HOST_ID 1
                                48 #define SPI_FREQ    80000000; // 80MHz
                            
                            $ idf.py build
                            $ dtc -I dts -O dtb -o main/uc.dtb main/uc.dts
                            

                            燒錄

                            $ esptool.py \
                                --chip esp32c3 \
                                -p /dev/ttyACM0 \
                                -b 460800 \
                                write_flash \
                                0x10000 build/uc-rv32ima.bin \
                                0x8000 build/partition_table/partition-table.bin \
                                0x200000 main/Image \
                                0x3ff000 main/uc.dtb
                            

                            完成 (idf.py -p /dev/ttyACM0 monitor)

                            Executing action: monitor
                            Running idf_monitor in directory /home/steward/Downloads/uc-rv32ima
                            Executing "/home/steward/.espressif/tools/python/v5.3.6/venv/bin/python /home/steward/.espressif/v5.3.6/esp-idf/tools/idf_monitor.py -p /dev/ttyACM0 -b 115200 --toolchain-prefix riscv32-esp-elf- --target esp32c3 --revision 3 --decode-panic backtrace /home/steward/Downloads/uc-rv32ima/build/uc-rv32ima.elf -m '/home/steward/.espressif/tools/python/v5.3.6/venv/bin/python' '/home/steward/.espressif/v5.3.6/esp-idf/tools/idf.py' '-p' '/dev/ttyACM0'"...
                            --- esp-idf-monitor 1.10.0 on /dev/ttyACM0 115200
                            --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
                            ESP-ROM:esp32c3-eco7-20230720
                            Build:Jul 20 2023
                            rst:0x15 (USB_UART_CHIP_RESET),boot:0xf (SPI_FAST_FLASH_BOOT)
                            Saved PC:0x420093aa
                            --- 0x420093aa: cache_read at /home/steward/Downloads/uc-rv32ima/main/cache.c:113
                            SPIWP:0xee
                            mode:DIO, clock div:1
                            load:0x3fcd5820,len:0x1820
                            load:0x403cc710,len:0xbd0
                            load:0x403ce710,len:0x2f5c
                            entry 0x403cc71a
                            I (24) boot: ESP-IDF v5.3.6 2nd stage bootloader
                            I (24) boot: compile time Oct 11 2026 20:50:35
                            I (25) boot: chip revision: v1.1
                            I (27) boot: efuse block revision: v1.3
                            I (32) boot.esp32c3: SPI Speed      : 80MHz
                            I (37) boot.esp32c3: SPI Mode       : DIO
                            I (41) boot.esp32c3: SPI Flash Size : 4MB
                            I (46) boot: Enabling RNG early entropy source...
                            I (52) boot: Partition Table:
                            I (55) boot: ## Label            Usage          Type ST Offset   Length
                            I (62) boot:  0 nvs              WiFi data        01 02 00009000 00006000
                            I (70) boot:  1 phy_init         RF data          01 01 0000f000 00001000
                            I (77) boot:  2 factory          factory app      00 00 00010000 00100000
                            I (85) boot:  3 kernel           Unknown data     01 58 00200000 001ff000
                            I (92) boot:  4 dtb              Unknown data     01 58 003ff000 00001000
                            I (100) boot: End of partition table
                            I (104) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=0a214h ( 41492) map
                            I (119) esp_image: segment 1: paddr=0001a23c vaddr=3fc8f000 size=01a58h (  6744) load
                            I (122) esp_image: segment 2: paddr=0001bc9c vaddr=40380000 size=0437ch ( 17276) load
                            I (133) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=163f0h ( 91120) map
                            I (153) esp_image: segment 4: paddr=00036418 vaddr=4038437c size=0abfch ( 44028) load
                            I (165) boot: Loaded app from partition at offset 0x10000
                            I (166) boot: Disabling RNG early entropy source...
                            I (177) cpu_start: Unicore app
                            I (186) cpu_start: Pro cpu start user code
                            I (186) cpu_start: cpu freq: 160000000 Hz
                            I (186) app_init: Application information:
                            I (189) app_init: Project name:     uc-rv32ima
                            I (194) app_init: App version:      3e062c5-dirty
                            I (199) app_init: Compile time:     Oct 11 2026 20:50:22
                            I (205) app_init: ELF file SHA256:  feb37fbbd...
                            I (210) app_init: ESP-IDF:          v5.3.6
                            I (215) efuse_init: Min chip rev:     v0.3
                            I (220) efuse_init: Max chip rev:     v1.99 
                            I (225) efuse_init: Chip rev:         v1.1
                            I (230) heap_init: Initializing. RAM available for dynamic allocation:
                            I (237) heap_init: At 3FC92B30 len 0002D4D0 (181 KiB): RAM
                            I (243) heap_init: At 3FCC0000 len 0001C710 (113 KiB): Retention RAM
                            I (250) heap_init: At 3FCDC710 len 0000294C (10 KiB): Retention RAM
                            I (257) heap_init: At 50000000 len 00001FE8 (7 KiB): RTCRAM
                            I (264) spi_flash: detected chip: generic
                            I (268) spi_flash: flash io: dio
                            I (272) sleep: Configure to isolate all GPIO pins in sleep state
                            I (279) sleep: Enable automatic switching of GPIO sleep configuration
                            I (286) main_task: Started on CPU0
                            I (286) main_task: Calling app_main()
                            psram init
                            I (286) gpio: GPIO[9]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
                            SPI_HOST_ID = 1
                            spi_bus_initialize = 0
                            spi_bus_add_device = 0
                            PSRAM ID: 0d5d46a26412
                            loading kernel Image (1457036 bytes) from flash:200000 into psram:0
                            RV32IMA starting
                            [    0.000000] Linux version 6.9.0-rc1+ (zjs@xhacker) (riscv64-linux-gnu-gcc (Debian 13.2.0-12) 13.2.0, GNU ld (GNU Binutils for Debian) 2.42) #17 Tue Apr  2 10:40:39 CST 2024
                            [    0.000000] Machine model: riscv-minimal-nommu,qemu
                            [    0.000000] earlycon: uart8250 at MMIO 0x10000000 (options '1000000')
                            [    0.000000] printk: legacy bootconsole [uart8250] enabled
                            [    0.000000] Zone ranges:
                            [    0.000000]   Normal   [mem 0x0000000080000000-0x00000000807fffff]
                            [    0.000000] Movable zone start for each node
                            [    0.000000] Early memory node ranges
                            [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000807fffff]
                            [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000807fffff]
                            [    0.000000] Falling back to deprecated "riscv,isa"
                            [    0.000000] riscv: base ISA extensions aim
                            [    0.000000] riscv: ELF capabilities aim
                            [    0.000000] Kernel command line: earlycon=uart8250,mmio,0x10000000,1000000 console=ttyS0
                            [    0.000000] Dentry cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
                            [    0.000000] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
                            [    0.000000] Built 1 zonelists, mobility grouping off.  Total pages: 2032
                            [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
                            [    0.000000] Memory: 6620K/8192K available (939K kernel code, 77K rwdata, 109K rodata, 292K init, 29K bss, 1572K reserved, 0K cma-reserved)
                            [    0.000000] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1
                            [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
                            [    0.000000] riscv-intc: 32 local interrupts mapped
                            [    0.000000] clint: clint@11000000: timer running at 1000000 Hz
                            [    0.000000] clocksource: clint_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
                            [    0.000000] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns
                            [    0.017927] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
                            [    0.031068] pid_max: default: 4096 minimum: 301
                            [    0.052508] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
                            [    0.065767] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
                            [    0.415035] devtmpfs: initialized
                            [    0.760730] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
                            [    0.773442] futex hash table entries: 16 (order: -5, 192 bytes, linear)
                            [    1.238923] clocksource: Switched to clocksource clint_clocksource
                            [    2.157118] workingset: timestamp_bits=30 max_order=11 bucket_order=0
                            [    8.863810] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
                            [    9.453665] of_serial 10000000.uart: error -6: IRQ index 0 not found
                            [    9.521361] printk: legacy console [ttyS0] disabled
                            [    9.652317] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 0, base_baud = 1048576) is a XR16850
                            [    9.673529] printk: legacy console [ttyS0] enabled
                            [    9.673529] printk: legacy console [ttyS0] enabled
                            [    9.686691] printk: legacy bootconsole [uart8250] disabled
                            [    9.686691] printk: legacy bootconsole [uart8250] disabled
                            [   11.072719] clk: Disabling unused clocks
                            [   13.545355] Warning: unable to open an initial console.
                            [   13.703702] Freeing unused kernel image (initmem) memory: 292K
                            [   13.714396] This architecture does not have kernel memory protection.
                            [   13.723989] Run /init as init process
                            starting pid 19, tty '/dev/console': '/sbin/getty -L -n -l /bin/sh console 0 vt100'
                            
                            ~ # 
                            ~ # free
                                              total        used        free      shared  buff/cache   available
                                Mem:           6912        1612        4768           0         532        4268
                            ~ # cat /proc/version
                                Linux version 6.9.0-rc1+ (zjs@xhacker) (riscv64-linux-gnu-gcc (Debian 13.2.0-12) 13.2.0, GNU ld (GNU Binutils for Debian) 2.42) #17 Tue Apr  2 10:40:39 CST 2024
                            ~ # cat /proc/cpuinfo
                                processor	: 0
                                hart		: 0
                                isa		: rv32ima_zicntr_zicsr_zifencei_zihpm
                                mmu		: none
                                mvendorid	: 0xff0ff0ff
                                marchid		: 0x0
                                mimpid		: 0x0
                                hart isa	: rv32ima_zicntr_zicsr_zifencei_zihpm
                            
                            1 条回复 最后回复 回复 引用 分享 0
                            • 1
                            • 2
                            • 3
                            • 3 / 3
                            • First post
                              Last post

                            Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                            行为准则 | 用户协议 | 隐私权政策