рдХрд╕реНрдЯрдо рд▓рд┐рдирдХреНрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдмрдирд╛рдирд╛



рдореЗрд░реЗ рдХрдИ рджреЛрд╕реНрдд рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдореЗрд░реЗ рдордВрджрд┐рд░ рдореЗрдВ рдЙрдВрдЧрд▓реА рдШреБрдорд╛ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реА рдЦреЛрдкрдбрд╝реА рдирд┐рдЪреЛрдбрд╝ рд░рд╣реА рд╣реИ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рд╢рдмреНрдж "рдЪрд╛рд▓рдХ" рдХреБрдЫ рд▓рдЧрднрдЧ рд░рд╣рд╕реНрдпрдордп рдЕрд░реНрде рдореЗрдВ рдбреВрдмрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЪрдпрдирд┐рдд рдЧреБрд░реБ рд╣реА рдЗрд╕рдХреЗ рд▓реЗрдЦрди рдХреЗ рддрд╛рдУ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪреАрдЬреЗрдВ рдХреИрд╕реА рд╣реИрдВ, рд╕рд╣рд┐рдд рдФрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп, рд▓реЗрдХрд┐рди рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд, рд╡реЗ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди, рд▓рд┐рдирдХреНрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдмреБрдирд┐рдпрд╛рджреА) рдХреА рд╕рдордЭ, рд╣рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЙрд╕рдХреА рдПрдХ рд╕рдордЭ, рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдФрд░ рджреГрдврд╝рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣ рд╕рдм рд╣реИред
рдХреНрдпрд╛ рдЖрдк рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ? рдлрд┐рд░ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЧреЛрддрд╛!

рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдордЭрд╛рдИ рдЬрд╛рддреА рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рд╕реНрд░реЛрдд рдХреЛрдб рд╢рд╛рдирджрд╛рд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ рдФрд░ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╛рд╣рд┐рддреНрдп рд╣реИрдВред рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдФрд░ рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ред рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирд╣реАрдВ, рдкрд╛рд╡рд░рдкреАрд╕реА 8360 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрд╛, рдЗрд╕рдиреЗ FPGA рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ред рдЕрдЬреАрдм рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрд╕рдкреАрдЖрдИ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ рдХрд┐рдпрд╛ред рдореИрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдорд╛рдирдХреАрдХрд░рдг рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд▓рд┐рдирдХреНрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рд╣реИрдВрдбрдмреБрдХ "рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░" рд╣реИред рдкреБрд╕реНрддрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдкреБрд╕реНрддрдХ рдореЗрдВ рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрдд рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЗрд╕ рдкреЛрд╕реНрдЯ рдиреЗ рдЗрд╕ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрдврд╝рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИред рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓рд┐рдирдХреНрд╕ рдХреА рд╕рд╛рджрдЧреА рдФрд░ рдЕрдиреБрдЧреНрд░рд╣ рдореЗрдВ рдкрд╛рдардХ рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рджреЗрдирд╛ рд╣реИ, рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ - рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ!

рд╣рдо рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд▓рд┐рдЦреЗрдВрдЧреЗ



рдЪреВрдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдиреНрдпреВрдирддрдо рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рд╣реИ, рдФрд░ рдЬреЛ рджреЛрд╕реНрдд рдирд╣реАрдВ рд╣реИрдВ - рдпрд╣ рджреЛрд╕реНрдд рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреИрд╕реЗред

рд╣рдо рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдХ LPT рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ HD44780 рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдмрдВрджрд░рдЧрд╛рд╣ рдкреНрд░рд╛рдЪреАрди рд╣реИ, рдФрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдореБрдЭрд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА - рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд░реАрдореЗрдХ рдХрд░рдирд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдЬрдЧрд╣ рд▓реЗрдиреЗ рдХреА рдмрд╛рдд рд╣реЛрдЧреА!

рддреЛ, рд╣рдореЗрдВ рдПрдХ рдПрд▓рдкреАрдЯреА рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдПрдХ рдкреБрд░рд╛рдиреЗ рдкреНрд░рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд░реНрдб рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ 36-рдкрд┐рди CENTRONICS рдХрдиреЗрдХреНрдЯрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдмрд╕ рдХреЗрдмрд▓ рдХреЛ рдЕрдирдкреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдмреЗрд╢рдХ, HD44780 рдкрд╛рд░рд┐рд╡рд╛рд░рд┐рдХ рд╕реНрдХреНрд░реАрди, рд╕рдмрд╕реЗ рдХрдо рд╕реЗ рдХрдо 4x40 рд╡рд░реНрдг рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд▓реЛрдЧ рднреА рдХрд░реЗрдВрдЧреЗ; рдареАрдХ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 10 kOhm рдХрд╛ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рд░реЗрдЬрд╝рд┐рд╕реНрдЯрд░ред рдЪреВрдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрд▓рдкреАрдЯреА рдкреЛрд░реНрдЯ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╕реЗ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╣рд▓рд╛ рдкреАрд╕реАрдЖрдИ рдХрд╛рд░реНрдб рдЦрд░реАрджрд╛ рдерд╛ рдЬреЛ рдореБрдЭреЗ рдЖрдпрд╛ рдерд╛ (рдЖрдк рдкреАрд╕реАрдЖрдИ-рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЛрд░реНрдб рдЗрддрдиреЗ рдЕрдзрд┐рдХ рдЪреАрдиреА рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реА рдЪрд┐рдк рдкрд░ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреБрдЫ рдирд╣реАрдВ, рд╣рдо рдЗрд╕реЗ рднреА рдЙрд▓рдЯ рджреЗрдВрдЧреЗ :))))ред


рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрд░реЛрдд

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛, рдФрд░ рдЖрдкрдХреЗ рд╣рд╛рде рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзреАрд░рддрд╛ рдХреЗ рд╕рд╛рде рдЬрд▓ рд░рд╣реЗ рд╣реИрдВред

рдЪреЗрддрд╛рд╡рдиреА !!!
рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝реЗрдВ!





рдореИрдВ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╕рдмрд╕реЗ рдХрдард┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде, рдФрд░ рд╣рдо рдореБрдЦреНрдп рд╕реНрддрд░ рдкрд░ рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдо рд░рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд░реЛрдЧреА рдХреЗ рдЕрдВрджрд░ рдмреЛрд▓рдирд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдФрд░ рдХрд░реНрдиреЗрд▓ рдХреНрд░реИрд╢ред рдЬрд┐рд╕ рд╕рдордп рдпрд╣ рдХрд░реНрдиреЗрд▓_рдкрдирд┐рдХ рдХреЛ рд▓рд╣рд░рд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рдЕрдЪрд╛рдирдХ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕реЗ рдЙрддрд╛рд░ рджрд┐рдпрд╛, рдФрд░ рдЕрдЪрд╛рдирдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧрдбрд╝рдмрдбрд╝ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ - рдпрд╣реА рд╡рд╣ рд╣реИ, рдЖрдкрдХрд╛ рд░рд╛рд╕реНрддрд╛ рд░рд┐рдмреВрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдЬреАрд╡рд┐рдд рд╣реИ, рддреЛ рд░рд┐рдмреВрдЯ рдХрдорд╛рдВрдбред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧрдВрднреАрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрднреА-рдХрднреА рд╕рд┐рд╕реНрдЯрдо рдЦреБрдж рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдкреЛрд░реНрдЯ рдкрд░ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЖрджрд┐), рддреЛ рдРрд╕рд╛ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕ рд╕рдм рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдиреАрдЪреЗ рдЧрд┐рд░рд╛ рд╕рдХрддрд╛ рд╣реИ (x86 рдореЗрдВ BIOS рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреЛрд░реНрдЯ 70h рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдорд╛рди) рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдкрдХрд░рдг рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдореАрди рдкрд░ GPIO рдкреИрд░ рд░рдЦрдХрд░)ред рдЗрд╕рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рджреЛрдиреЛрдВ рд╕реНрддрд░реЛрдВ рдкрд░!

рдиреАрдЪреЗ рдЙрддрд░ рд░рд╣рд╛ рд╣реИ



рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЗрдкреНрдЯ-рдкреЛрд░реНрдЯ рдХреЗ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреЛрд░реНрдЯ 378h рдХреЗ рдорд╛рдирдХ рдкрддреЗ рдкрд░ рд░рд╣рддрд╛ рд╣реИ ред рдореБрдЭреЗ рдЖрдзреА рд░рд╛рдд рдХреЛ рдЬрдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдЖрдВрдХрдбрд╝реЗ рдХреЛ рдХрд╣реВрдВрдЧрд╛, рдЗрддрдирд╛ рдХреБрдЫ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рдПрдХ рджреБрд╢реНрдорди рднреБрдЧрддрд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рд╣рд░рд╛рдирд╛ рд╣реИ!
рд╣рдо рдкреАрд╕реАрдЖрдИ рдпрд╛ рдкреАрд╕реАрдЖрдИ-рдИ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдмреЛрд░реНрдб рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдмреВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреАрд╕реАрдЖрдИ рдмрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

lspci -v тАж 05:01.0 Serial controller: Device 4348:5053 (rev 10) (prog-if 02 [16550]) Subsystem: Device 4348:5053 Flags: medium devsel, IRQ 18 I/O ports at c030 [size=8] I/O ports at c020 [size=8] Kernel driver in use: serial 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рд┐рдирдХреНрд╕ рдиреЗ рдкреАрд╕реАрдЖрдИ рдмрд╕ рдореЗрдВ рдХреБрдЫ рдкрд╛рдпрд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдмрд╛рдПрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдбреНрд░рд╛рдЗрд╡рд░ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдкрддреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдпрд╣ рдкреЛрд░реНрдЯ рдмреИрдарддрд╛ рд╣реИред рдпреЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ: I / O рдкреЛрд░реНрдЯ, рдЕрд░реНрдерд╛рддреН рд╕рдВрдЦреНрдпрд╛ c030h рдФрд░ c020h ред
рдЕрдм рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкрддреЗ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрд▓ рдИ рдбреА рдХреЛ рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рд╕реЗ рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ (рд▓рдЧрднрдЧ 310 рдУрдо рдХреЗ рдкреНрд░рддрд┐рд░реЛрдзрдХ, рдпрд╛ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛)


рд╕рддреНрдпрд╛рдкрди рдпреЛрдЬрдирд╛

рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд▓ рдИ рдбреА рдХрд╛ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рддрд╛рд░реЛрдВ рдХреЛ рд╕реАрдзреЗ CENTRONICS рдХрдиреЗрдХреНрдЯрд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдФрд░ рдореИрдВ рд╕рднреА 8 рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рддрд╛рд░реЛрдВ рдХреЛ рдлрд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЗрд╡рд▓ 6 (рдкрд╣рд▓реЗ 4 рдФрд░ рдЕрдВрддрд┐рдо рджреЛ) рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдПред


рдЗрдХрдЯреНрдареЗ рдкреЛрд░реНрдЯ рдкрд░реАрдХреНрд╖рдХ

рдФрд░ рд╣рдо рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реНрдХреЗрдЪ рдХрд░реЗрдВрдЧреЗред

рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛ www.faqs.org/docs/Linux-mini/IO-Port-Programming.html#s9 ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рд░реЗрдЦрд╛:

 #include <asm/io.h> 


рдкрд░

 #include <sys/io.h> 


рд╣рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (100000) рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдорд╛рдиреНрдп рджреЗрд░реА рдХрд░рддреЗ рд╣реИрдВ;
, рд╕реНрд▓реАрдк (1);) рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреЛрд░реНрдЯ рдореЗрдВ рддреАрди рдЖрдЙрдЯрдкреБрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:

 outb(0, BASEPORT); sleep(1); outb(0xAA, BASEPORT); sleep(1); outb(0xFF, BASEPORT); sleep(1); 


0xc030 рдкреЛрд░реНрдЯ рдореЗрдВ #define рдЖрдзрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд░реВрдЯ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ: рдПрд▓рдИрдбреА рдкреНрд░рдХрд╛рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдВрдХ рдореЗрдВ рдмрджрд▓реЗрдВ - 0xc020 - ale op:


рдЕрд╢рдХреНрдд


рдкрд┐рди рдкрд░ рдПрдПрдПрдЪ


рдФрд░, рдмреЗрд╢рдХ, рдПрдХ рджреВрд╕рд░реЗ рдПрдлрдПрдлрдПрдЪ рдореЗрдВ

рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрд╛рдиреА рдкреЛрд░реНрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛, рдЖрдк рдЬрд▓рд╛рдК рд▓рдХрдбрд╝реА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдмреЛрд░реНрдб рдХрд╛ LPT рдкреЛрд░реНрдЯ рдкрддреЗ рдкрд░ рд░рд╣рддрд╛ рд╣реИред 0Xc020 !

рдореИрдВ tinsmith рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдзреНрдпрд╛рди рдЬрд╛рджреВ рдХреА рд╕рдВрдЦреНрдпрд╛ 0xAA рдкрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдпрд╣ рд▓реЛрдЧреЛрдВ рдФрд░ рд╢реВрдиреНрдп рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИред рдЗрд╕ рддрд░рд╣ : 10101010b рдпрд╣ рдХрд┐рд╕реА рднреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреЛ рдХреЛрдИ рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдорди рдореЗрдВ рдмрд╛рдЗрдирд░реА, рджрд╢рдорд▓рд╡, рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдХрд╛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддрдХреА рдкреНрд░рджрд░реНрд╢рди



рдбреНрд░рдо рд░реЛрд▓, рдпрд╣ рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ! рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдорд┐рд▓рд╛рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред


рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпреЛрдЬрдирд╛ GOST рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд░реЗрдбрд┐рдпреЛ рдкрддреНрд░рд┐рдХрд╛ рднреА рдирд╣реАрдВ рд╣реИ

рд╕реНрдХреНрд░реАрди рдХреЛ рдкрд╛рд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ USB рд╡рд╛рдпрд░ рдХреЛ рдЕрдирд╕реБрдХреНрд░ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рд╡рд╛рдпрд░ рд╣реИрдВред рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╣рд╛рдереЛрдВ рддрдХ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ - рдпрд╣ рдПрд▓рдкреАрдЯреА рддрд╛рд░ рдореЗрдВ рд╕реАрдзреЗ рдпреВрдПрд╕рдмреА рдмрд┐рдЬрд▓реА рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реИ, рдХрдИ рдкреГрдереНрд╡реА рддрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдирд╛ред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рд╛рде рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рдореИрдВ рдЗрд╕реЗ рдЬрд░реВрд░ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ :))))ред
рдирддреАрдЬрддрди, рдмрд┐рдЬрд▓реА рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рдЪрдордХ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рджреЛ рд╕реНрдЯреНрд░рд┐рдкреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдВред рд╡реЗ рд╣рдореЗрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВ рд╣реИред


рдбрд┐рд╡рд╛рдЗрд╕ рдЕрд╕реЗрдВрдмрд▓реА

рдлреВ, рд╣рдордиреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рдмреБрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛ рд░рд╣реА рд╣реИ



рдореИрдВрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП Arduino рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб I2C рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдпрджрд┐ рдЕрдВрддрд┐рдо рд╢рдмреНрдж рдЖрдкрдХреЛ рдХреБрдЫ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд┐рдВрддрд┐рдд рди рд╣реЛрдВред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдбрд┐рд╕реНрдкреНрд▓реЗ рджреЛ рддрд╛рд░реЛрдВ (рдмрд╕ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ рдЬреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдмрд╛рдЗрдЯ рдХреЛ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдареАрдХ рд╣рдорд╛рд░реЗ LPT рдкреЛрд░реНрдЯ рдХреА рддрд░рд╣ред рдирддреАрдЬрддрди, I2C рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрд╛рд╣рд░ рдлреЗрдВрдХрдирд╛, рд╣рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред
рд╕реНрд╡рдЪреНрдЫрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЬрдЧрд╣ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛, рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛, рдХреБрдЫ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдирд╛рдореЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП (рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдкрд╛рдиреА рдмрд╣ рдЧрдпрд╛) рдФрд░ рдХреИрдВрдбреА рдорд┐рд▓рд╛ред
рд╡реИрд╕реЗ, рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ STM32 рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, I2C рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд╕рд╛рде рднреАред рдФрд░ рдЕрдм рд╣рдо рдЗрд╕реЗ x86 рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ - рдХреЛрдб рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреА рдорд╣рд╛рди рд╢рдХреНрддрд┐! рдирдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 10 рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред
рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдПрдХ рдПрдХрд▓ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдЧреИрд░-рдкреЛрд░реНрдЯреЗрдмрд▓ рдиреЛрдб рд╣реИ, рдФрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред I2C рдкрд░ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдерд╛:

  void expanderWrite(unsigned char _data){ outb(((_data) | _backlightval), BASEPORT); //x86 instruction!!!!! } 


рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЗрд╕реЗ рдмрджрд▓рдХрд░, рдХреЛрдб рдХреЛ AVR, STM32, MIPS, рдЖрджрд┐ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ред рдкреЛрд░реНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рд╣реЗрдбрд░ lcd.h рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдм, рдЕрдм рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рднреА рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рджреГрд╢реНрдп рдмрди рдЧрдпрд╛ рд╣реИред
рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП print_to_string рдЖрд╡рд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 void print_to_string (unsigned char col, unsigned char row, unsigned char c[], unsigned char len); 


рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрд▓рдо рд╕рдВрдЦреНрдпрд╛ (рд╢реВрдиреНрдп рд╕реЗ 19 рддрдХ), рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ (рд╢реВрдиреНрдп рд╕реЗ рддреАрди рддрдХ), рддреАрд╕рд░рд╛ рд╡рд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╕реВрдЪрдХ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рд▓рд╛рдЗрди рдХреА рд╕рдорд╛рдкреНрддрд┐ "\ 0" рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рд▓рдВрдмрд╛рдИ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП! рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/io.h> #include "lcd.h" #define LCD_STRINGS 4 // #define LCD_COLUMNS 20 // int main() { LCD_init(0, LCD_COLUMNS, LCD_STRINGS);//  print_to_string (0, 0, "XXXXXXXXXXXXXXXXXXXX" , 20); print_to_string (0, 1, "YYYYYYYYYYYYYYYYYYYY" , 20); print_to_string (0, 2, "ZZZZZZZZZZZZZZZZZZZZ" , 20); print_to_string (0, 3, "MMMMMMMMMMMMMMMMMMMM" , 20); exit(0); } 


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реНрдХреНрд░реАрди рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:


рд╣рдорд╛рд░реА рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд!

рдЗрд╕ рдЕрд╢реНрд▓реАрд▓ рд╕рд╛рд╣рд┐рддреНрдп рд╕реЗ рдЪрд┐рдВрддрд┐рдд рди рд╣реЛрдВред рдпрд╣ рд╕реНрдХреНрд░реАрди рдЯреВрдЯреА рд╣реБрдИ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рдереА, рдпрд╛ рдпреЛрдВ рдХрд╣реЗрдВ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдмрд╕ рд╕реНрдереИрддрд┐рдХ рд╕реЗ рдорд░ рдЧрдпрд╛ рдерд╛ (рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ)ред рдпрд╣ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рд╕рднреА рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реИред рдРрд╕реЗ рдЪрдордХрджрд╛рд░ рд╕реНрдХреНрд░реАрди рдЪреАрдиреА рдХрд░рддреЗ рд╣реИрдВ!

рдЗрд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд┐рд╕реА рднреА рд╡рд░реНрдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлреЛрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред рд▓реЗрдХрд┐рди, рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред рдпрджреНрдпрдкрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рджрд╛рдирд╡ рдпрд╛ рдХреБрдЫ рдФрд░ рдореЗрдВ рд░реАрдореЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд▓реНрдкрдирд╛ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬреЛ рд▓реЛрдЧ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдм рдЧрдП рдереЗ, рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреВрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВред
рд╣рдорд╛рд░рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг



рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдмрдВрдЯреВ рдФрд░ рдбреЗрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЗрд╕ рдмреНрд▓реЙрдЧ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред markloiseau.com/2012/04/hello-world-loadable-kernel-module-tutorial рд▓реЗрдЦ
рдореИрдВ рдмрд╕ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдбреЗрдмрд┐рдпрди рдкреИрдХреЗрдЬ рд▓реЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛:

 sudo apt-get install build-essential linux-headers-$(uname -r) 


рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдкрд╣рд▓рд╛, рдФрд░ рд╕реНрдкрд╖реНрдЯ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдереЛрдбрд╝рд╛ рдмрд╡рд╛рд╕реАрд░, рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ:

 uname - a 


рдФрд░ рдЗрд╕реЗ www.kernel.org рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдореИрдВ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдПрдХ рдЖрд▓рд╕реА рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ, рдореБрдЭреЗ рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рд╕реНрд╡рдЪрд╛рд▓рди рдкрд░ рднрд░реЛрд╕рд╛ рд╣реИред

 #    sudo -s cd /usr/src/ apt-get source linux-image-$(uname -r) #      . #      linux_3.8.0-9.18.tar.gz      /usr/src/linux-3.8.0 


Uso, рдЗрд╕ рдкрде рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП / usr / src / linux, рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЧреБрдард▓реА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВред рд╣реЛрдирд╛ рдпрд╛ рди рд╣реЛрдирд╛, рдЕрдкрдиреЗ рд▓рд┐рдП рддрдп рдХрд░рдирд╛ рдПрдХ рдореВрдЯ рдкреЙрдЗрдВрдЯ рд╣реИред
рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЦрдЬрд╛рдирд╛ рд╣реИ: рдЕрдк-рдЯреВ-рдбреЗрдЯ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдПрдХ рднрдВрдбрд╛рд░ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рд░рд╛рд╢рд┐ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмреНрд░рд┐рдЬрд╣реЗрдбред
рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ, рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдбреИрдбреА рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ!

рдЦреБрдж рдХрд╛ рдбреНрд░рд╛рдЗрд╡рд░



рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреИрдпрд╛рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЧрд▓рдд рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЕрдм рд╣рдо рдПрдХ рдФрд░ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣реИрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдирд╣реАрдВ, рдХрд░реНрдиреЗрд▓ рд╕реНрдерд╛рди рдореЗрдВред рдФрд░ рдпрд╣рд╛рдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред
рд╕реНрдерд┐рддрд┐ рдХреА рд╕рднреА рдЧрд░реАрдмреА рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд░реНрдиреЗрд▓ рдПрдХ рдмрдбрд╝рд╛, рдмрдбрд╝рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░, рдХрд╛рд░реНрдп, рдЖрджрд┐ред рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ! рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ (рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХрддрдо рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдХреЛ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!
рд╣рдо рдЗрд╕рдореЗрдВ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдХреЗ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордЬрд╛рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕реЗ рд╣рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рд▓реЛрдб рдФрд░ рдЕрдирд▓реЛрдб рдХрд░реЗрдВрдЧреЗред
рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рди рд╣реЛ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд╣рдо рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗ)ред рд╣рдо рд╣реЗрдбрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╢реВрдиреНрдп рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдореБрдЦреНрдп рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред рд╕рднреА рд╣реЗрдбрд░ рдХреЛ рдкрд░рдорд╛рдгреБ рдореЗрдВ рдмрджрд▓реЗрдВ:

 #include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> /* everything... */ #include <asm/io.h> #include <linux/unistd.h> #include <linux/delay.h> /* udelay */ #include <asm/uaccess.h> #include <linux/miscdevice.h> 


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ unistd.h рдФрд░ io.h рднреА рдкрд░рдорд╛рдгреБ рд╣реЛ рдЧрдП рд╣реИрдВред

рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдореЙрдбреНрдпреВрд▓ рд▓реЗрдВред рдЪрд▓реЛ init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдареАрдХ рдХрд░реЗрдВ:

 static int __init hello_init(void) { LCD_init(0, LCD_COLUMNS, LCD_STRINGS); print_to_string (0, 1, "Hello Habrahabr " , 20); printk(KERN_INFO "Lpt module init\n"); return 0; // Non-zero return means that the module couldn't be loaded. } 


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдмрджрд▓ рд░рд╣рд╛ рд╣реИ (рд╕рдмрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░), рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкрд░рдорд╛рдгреБ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛:

 void expanderWrite(unsigned char _data){ //outb(((_data) | _backlightval), BASEPORT); //x86 instruction rootfs!!!!! outb_p(((_data) | _backlightval),BASEPORT); //x86 instruction kernel!!!!! } 


рдФрд░, рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рд╡рд┐рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдпред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд┐рд▓рдВрдм рдПрдХ рдЕрд▓рдЧ рдЧреАрдд рд╣реИ, рдЬрд┐рд╕реЗ рдкреВрд░реЗ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рдЬрд▓реНрджреА рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдХрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХреЛрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА:

 static inline int delayMicroseconds(int value) { //usleep(value); //rootfs if (value > 1000) msleep(value/1000); udelay(value%1000); return 0; //kernel } 


рдЗрд╕ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕рд░рд▓ рд╣реИ: рдХрд░реНрдиреЗрд▓ рдХреЗ рдЕрдВрджрд░ udelay рдПрдХ рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рди рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдареВрдВрда рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВ:

 TARGET = lptlcd obj-m := $(TARGET).o KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) CC = gcc all: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions 


рдФрд░ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░реЗрдВ:

 sudo insmod lptlcd.ko 


рдпрджрд┐ рд╣рдордиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИрдВ, рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ dmesg рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧреА:

[10036.950566] Lpt module init

рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 sudo rmmod lptlcd 


dmesg рдХрд╣реЗрдВрдЧреЗ:

[10077.176714] Cleaning up module

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдЧрд╛рддрд╛рд░ dmesg рдирд╣реАрдВ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА рд╣реИ, рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ Jtu comrade рдиреЗ рдореБрдЭреЗ рд╕реБрдЭрд╛рдпрд╛ рд╣реИ:

 while true; do sudo dmesg -c; sleep 1; done 


рдпрд╛, рдпрджрд┐ рдЖрдк рдЙрдмрдВрдЯреВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рд╡рд┐рддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ sudo рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реАрди рдкрд░:


рдЖрдкрдХреЛ рдирдорд╕реНрдХрд╛рд░ рд╣реИ!

рдпрджрд┐ рдЖрдкрдиреЗ рдпрд╣ рд╕рдм рджреЗрдЦрд╛ - рдмрдзрд╛рдИ рд╣реЛ, рддреЛ рдпрд╣ рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмреЗрдХрд╛рд░ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ! рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордиреЛрд░рдВрдЬрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА рдореИрдЯрд░рд┐рдпрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреА рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ред

рдореИрдЯрд░рд┐рдпрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж



рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЖрдк рдХреБрдЫ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рджреВрд░ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреАрдХрд╛рддреНрдордХ, рдмреНрд▓реЙрдХ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рдФрд░ рдорд╛рдореВрд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдирдВрдмрд░ рднреА рд╣реЛрддрд╛ рд╣реИред рдкреБрд╕реНрддрдХ " рдж рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб " рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдкреБрд╕реНрддрдХ рдХреЛ рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░реВрдВрдЧрд╛:
рдкреНрд░рдореБрдЦ рдФрд░ рдорд╛рдореВрд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдирдВрдмрд░
рдкреНрд░рдореБрдЦ рдФрд░ рдорд╛рдореВрд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдирдВрдмрд░
рдЖрдЗрдП рдХреБрдЫ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рдердорд┐рдХ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдкрд╣рд▓реЗ рддреАрди рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ:
 # ls -l /dev/hda[1-3] brw-rw---- 1 root disk 3, 1 Jul 5 2000 /dev/hda1 brw-rw---- 1 root disk 3, 2 Jul 5 2000 /dev/hda2 brw-rw---- 1 root disk 3, 3 Jul 5 2000 /dev/hda3 



рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдХреЙрд▓рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ? рдкрд╣рд▓реЗ рдирдВрдмрд░ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ "рд╣рд╛рдИ рдирдВрдмрд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ - "рдЬреВрдирд┐рдпрд░ рдирдВрдмрд░"ред рдкреНрд░рдореБрдЦ рд╕рдВрдЦреНрдпрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рд╕реЗрд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдЪрд╛рд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╣реА рдкреНрд░рдореБрдЦ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╣реА рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ 3 рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдорд╛рдореВрд▓реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рддреАрди рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХ рд╣реА рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд┐рдд рд╣реИрдВ, рдлрд┐рд░ рднреА, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдореВрд▓реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ "рджреЗрдЦрддрд╛ рд╣реИ"ред
рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рджреЛ рдмрдбрд╝реЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдмреНрд▓реЙрдХ рдФрд░ рдкреНрд░рддреАрдХрд╛рддреНрдордХред рдмреНрд▓реЙрдХ рдФрд░ рдЪрд░рд┐рддреНрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдЗрдЯ рднрд╛рдЧреЛрдВ рдореЗрдВ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдмреНрд▓реЙрдХред рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдмрдлрд░ рд╣реИ, рдЬреЛ рд╡рд┐рдирд┐рдордп рджрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдпреВрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ 1 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдпрд╛ рджреВрд╕рд░реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ 2. рдХреА рд╢рдХреНрддрд┐ рд╣реИред рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реВрдЪрдирд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рдХреЗрд╡рд▓ рдЪреИрдирд▓ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ, рдмрд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд┐рд╡рд╛рдЗрд╕ рдЪрд░рд┐рддреНрд░ рд╡рд░реНрдЧ рдХреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдлрд╝рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ ls-l / dev, 'b' рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓рд╛ рдЪрд░рд┐рддреНрд░ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ, рдпрджрд┐ 'c' рд╣реИ, рддреЛ рдпрд╣ рдЪрд░рд┐рддреНрд░ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдбрд┐рд╡рд╛рдЗрд╕ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рдЪрд░рд┐рддреНрд░ рдЙрдкрдХрд░рдгреЛрдВ (рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ) рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:
 crw-rw---- 1 root dial 4, 64 Feb 18 23:34 /dev/ttyS0 crw-r----- 1 root dial 4, 65 Nov 17 10:26 /dev/ttyS1 crw-rw---- 1 root dial 4, 66 Jul 5 2000 /dev/ttyS2 crw-rw---- 1 root dial 4, 67 Jul 5 2000 /dev/ttyS3 



рдпрджрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдореБрдЦ рдбрд┐рд╡рд╛рдЗрд╕ рдирдВрдмрд░ рдХреИрд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ /usr/src/linux/documentation/devices.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВред
рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╛рдЗрд▓реЗрдВ mknod рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВред рдПрдХ рдирдпрд╛ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдХреЙрдлрд╝реА" рдирд╛рдо рдХреЗ рд╕рд╛рде, 12 рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрдЦреНрдпрд╛ рдФрд░ 2 рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб mknod / dev / Coffee c 12 рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЛрдИ рднреА рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ / dev рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡реАрдХреГрдд рд╕рдордЭреМрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦрдирд╛ рд╢рд╛рдпрдж рдЗрддрдирд╛ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ - рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред
рдХреБрдЫ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреЗ рддрд╣рдд рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рдореИрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЬрдм рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрд░реНрдиреЗрд▓ рдЙрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪрддрдо рдлрд╝рд╛рдЗрд▓ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд░реНрдиреЗрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╛рдореВрд▓реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдХреЗрд╡рд▓ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реА рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рднреМрддрд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдЬрдм рдореИрдВ "рдбрд┐рд╡рд╛рдЗрд╕" рдХрд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреАрд╕реАрдЖрдИ рдмреЛрд░реНрдб рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдХреБрдЫ рдЬреНрдпрд╛рджрд╛ рд╣реА рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╣рд╛рде рдореЗрдВ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рджреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 % ls -l /dev/fd0 /dev/fd0u1680 brwxrwxrwx 1 root floppy 2, 0 Jul 5 2000 /dev/fd0 brw-rw---- 1 root floppy 2, 44 Jul 5 2000 /dev/fd0u1680 



рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдк рдЗрди рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рдбреНрд░рд╛рдЗрд╡рд░ (рдкреНрд░рдореБрдЦ рд╕рдВрдЦреНрдпрд╛ 2) рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЖрдк рдпрд╣ рднреА рджрд╛рд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдЖрдкрдХреА рдлреНрд▓реЙрдкреА рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдбреНрд░рд╛рдЗрд╡ рд╣реЛред рд▓реЗрдХрд┐рди рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдХреНрдпреЛрдВ? рд▓реЗрдХрд┐рди рдмрд╛рдд рдпрд╣ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ 1.44 рдПрдордмреА рдлреНрд▓реЙрдкреА рдбрд┐рд╕реНрдХ рдбреНрд░рд╛рдЗрд╡ рд╣реИред рдЕрдиреНрдп рд╕рдорд╛рди рдбреНрд░рд╛рдЗрд╡ рд╣реИ, рд▓реЗрдХрд┐рди 1.68 рдПрдордмреА рдлреНрд▓реЙрдкреА рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЬреЛ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ "рд╕реБрдкрд░рдлреЙрд░реНрдореИрдЯреЗрдб" рдбрд┐рд╕реНрдХ рдХрд╣рддреЗ рд╣реИрдВ, рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдлреНрд▓реЙрдкреА рдбрд┐рд╕реНрдХ рдорд╛рдирдХ рд╕реНрд╡рд░реВрдкрд┐рдд рдлреНрд▓реЙрдкреА рдбрд┐рд╕реНрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рджреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╛рдЗрд▓реЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдореВрд▓реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВред рддреЛ рд╢рдмреНрдж "рдбрд┐рд╡рд╛рдЗрд╕", рд╣рдорд╛рд░реА рдЪрд░реНрдЪрд╛ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреБрдЫ рдФрд░ рд╕рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ



рд╣рдо рдЪрд░рд┐рддреНрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдмреБрдХ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдПрдХ рдЪрд░рд┐рддреНрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛ред рдпрд╣ рд▓реЗрдЦ рдПрдХ рдореБрдХреНрдд рдирд┐рд╢реНрдЪрд┐рдд рдирд╛рдмрд╛рд▓рд┐рдЧ рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдирд╛рдмрд╛рд▓рд┐рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛: рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдКрдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛, рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рдмрд╛рдХреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
File_operations рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

 static const struct file_operations lptlcd_fops = { .owner = THIS_MODULE, .read = dev_read, .write = dev_write, }; 


рдЬрд╣рд╛рдБ dev_read рдФрд░ dev_write рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВ (рдХреЙрд▓рдмреИрдХ рджрд░реНрдЬ рдХрд░рдирд╛) рдЬреЛ рдХреНрд░рдорд╢рдГ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣рд╛рдВ рдЖрдк рдЕрднреА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рдд: рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рди-рдЯрд╛рдЗрдо рдЦреЛрд▓рдиреЗ рдФрд░ рд╕рдорд╛рдкрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .open рдФрд░ .release рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЖрд▓рд╕реА рд╣реВрдВред

рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ

 static struct miscdevice lptlcd_dev = { MISC_DYNAMIC_MINOR, "lptlcd", &lptlcd_fops }; 


рдЬрд╣рд╛рдВ MISC_DYNAMIC_MINOR рдбрд╛рдпрдирд╛рдорд┐рдХ рдорд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдХреНрд░реЛ рд╣реИ, рд▓рд╛рдЗрди "lptlcd" рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо рд╣реИ, рдпрд╣ / dev / рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦреЗрдЧрд╛ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ / dev / lllcd рд╣реЛрдЧрд╛), рдФрд░ lptlcd_fops file_operations рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕реВрдЪрдХ рд╣реИред

рдбреНрд░рд╛рдЗрд╡рд░ рдкрдВрдЬреАрдХрд░рдг рдХреЛрдб рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ

 static int __init dev_init( void ) { int ret; //   ret = misc_register( &lptlcd_dev ); //    if( ret ) printk( KERN_ERR "=== Unable to register misc device\n" ); //  LCD_init(0, LCD_COLUMNS, LCD_STRINGS); print_to_string (0, 0, "lptlcd init " , 16); return ret; } 


рдбрд┐рд╡рд╛рдЗрд╕ рдбреЗрд░реЗрдЧреНрдпреВрд╢рди рд╕рд░рд▓ рд╣реИ:

 static void __exit dev_exit( void ) { misc_deregister( &lptlcd_dev ); } 

рдЦреИрд░, рдореИрдХреНрд░реЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЙрд▓рдмреИрдХ, рд▓рд╛рдЗрд╕реЗрдВрд╕, рд▓реЗрдЦрдХ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдордд рднреВрд▓рдирд╛

 module_init( dev_init ); module_exit( dev_exit ); MODULE_LICENSE("GPL"); MODULE_AUTHOR( "Dolin Sergey <dlinyj@gmail.com>" ); MODULE_VERSION( "0.1" ); 


рдЬрд╛рджреВ рдХреА рд╢реБрд░реБрдЖрдд dev_read рдФрд░ dev_write рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрддреА рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдБ

 static char *info_str = "lcdlpt device driver\nAuthor Dolin Sergey aka dlinyj dliny@gmail.com\n"; // buffer! static ssize_t dev_read( struct file * file, char * buf, size_t count, loff_t *ppos ) { int len = strlen( info_str ); if( count < len ) return -EINVAL; if( *ppos != 0 ) { return 0; } if( copy_to_user( buf, info_str, len ) ) return -EINVAL; *ppos = len; return len; } 


рд╡рд╣ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 cat /dev/lptlcd 


рдлрд┐рд░ рд╣рдо info_str рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрди рджреЗрдЦреЗрдВрдЧреЗред
рдХреЛрдб рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдпрд╣ рд╣реИ рдХрд┐ copy_to_user рдлрд╝рдВрдХреНрд╢рди, copy_from_user рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдХрд░реНрдиреЗрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдФрд░ dev_write рдлрд╝рдВрдХреНрд╢рди, рдпрд╣ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдХреНрд░реАрди рдореЗрдВ рдзрдХреЗрд▓рддрд╛ рд╣реИред
 static int str_pos = 0; //  static int col_pos = 0; //  static ssize_t dev_write( struct file *file, const char *buf, size_t count, loff_t *ppos ) { int i; //  . for (i=0; i<count;i++) { //     setCursor(col_pos, str_pos); //       ,    if ((col_pos==0) && (str_pos==0)) clear(); //   ,     if (buf[i] != '\n') { write_l(buf[i]); col_pos++; } //  ,      else {col_pos=LCD_COLUMNS;} //        if (col_pos == LCD_COLUMNS) { col_pos=0; str_pos++; //   ,      if (str_pos == LCD_STRINGS) { str_pos=0; } } } return count; } 


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рди рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рдирд┐рдХрд╛рд▓реЗрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рд╣рдо рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ:

 $ ls /dev/lptlcd /dev/ttylptlcd 


рд╣рдо рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

 $ cat /dev/lptlcd lcdlpt device driver Author Dolin Sergey aka dlinyj dliny@gmail.com echo -ne "Trolo Pysh\nPysh" > /dev/lptlcd 


рдФрд░ рд╣рдо рдЗрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ:


рдореИрдВ рдПрдХ рдпреВрдПрдлрдУ рдЪрд╛рд▓рдХ рд╣реВрдВред

рд╕рдм рдХреБрдЫ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ рдФрд░ рд╕рд╛рде рдореЗрдВ рдПрдХ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ! рдмрдзрд╛рдИ рд╣реЛ, рдЖрдк рд╢реИрдВрдкреЗрди рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░рд╣рд╛рдЙрд╕ рдореЗрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ, рдЬрд╛рджреВ рдХреЗ рдмреБрд▓рдмреБрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рджреВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдХреБрдЫ рд╕рдВрджреЗрд╣ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдХреБрдЫ рдЧрд▓рдд рд╣реИ ...

рдореБрдЭреЗ рдФрд░ рдЪрд╛рд╣рд┐рдП !!!



рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдордиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдкрд╛рда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд╛рда, рдЙрдирдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдЕрдкреВрд░реНрдгрддрд╛, рдЕрдкреВрд░реНрдгрддрд╛ рдХреА рднрд╛рд╡рдирд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AVR рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ DIHALT рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рд▓реЗрдЦ , рддреЛ рдЖрдк рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рдзрди рдкрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
1. рдЖрдк рдкрд╛рда рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдмрд╕ рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирдП рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдбрд╝реА рдЪрдХреНрд░ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рд▓рдВрдм рд╣реИрдВ)ред
2. рдЖрдк рдкрд╛рда рдХреЛ рдПрдХ рдордирдорд╛рдирд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
3. рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
4. рдФрд░ рд╣рд╛рдВ, рдЖрдк рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдлреЛрдВрдЯ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЪрд╛рдкрд▓реВрд╕реА рдордд рдХрд░реЛ, рдХреЗрд╡рд▓ 8 рд╡рд░реНрдг рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд░реВрд╕реА (8 рд╡рд░реНрдгреЛрдВ) рдХреЗ рд╕рд╛рде рд░реВрд╕реА рдореЗрдиреВ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рдПрдХ рд░реВрд╕реА рдореЗрдиреВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреВрд░реЗ рд╡рд┐рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдордиреЛрд░рдВрдЬрдХ рд░реАрдмрд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдерд╛, рд╣рдВрд╕)ред рддреЛ рдпрд╣ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдХрд╛рдо рдкрд░ рдПрдХ рдХреЙрдлреА рдорд╢реАрди рдкрд░ рдлреЙрдиреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕реНрдХреНрд░реАрди, рдмрд╕ Russified, рд╕реНрдерд╛рдкрд┐рдд рд╣реИред


рдХреЙрдлреА рдорд╢реАрди рдкрд░ рд╕реНрдХреНрд░реАрди

рдпрд╣рд╛рдВ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЪреАрдиреА рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд░рддреАрдХ, рдПрдХ рдЦрд╛рд▓реА рд╕рд░реНрдХрд▓ (рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛) рдФрд░ рдкреВрд░реНрдг;
- рдПрдХ рд░рдирд┐рдВрдЧ рд▓рд╛рдЗрди рдХреЗ рдкрд╛рдВрдЪ рдЕрдХреНрд╖рд░ (5 рдХреЙрд▓рдо рдХреЗ рдПрдХ рдЪрд░рд┐рддреНрд░ рдореЗрдВ)ред

рдХреБрд▓ 2 + 5 - рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдг рд╢реЗрд╖ рд░рд╣рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрднрд╡рддрдГ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рдЧрдирд╛ рдорддред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪрд┐рдкреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрддрдиреЗ рдХрд┐ рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд▓рд╕реА рд╣реВрдВред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдо рдпрд╣ рд╕рдм рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕ рдЕрджреНрднреБрдд рдХреНрд╖рдг рдореЗрдВ, рдЭрд╛рдбрд╝рд┐рдпреЛрдВ рд╕реЗ рдореЗрд░реЗ рдкрд┐рдпрд╛рдиреЛ рдХреЛ рдкрд╛рдиреЗ рдХрд╛ рд╕рдордп рдерд╛, рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдерд╛ред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реВрдВ (рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВрдиреЗ рднрд╛рдЧреЛрдВ рдХреЛ рдЦрд░реАрджрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛), рдореИрдВрдиреЗ рдЧреБрдЧрд▓реА рдХреА, рдФрд░ рдХрд┐рд╕реА рдФрд░ рдиреЗ рдХрд┐рдпрд╛ред рдФрд░, рд▓реЛ рдФрд░ рдирд┐рд╣рд╛рд░рдирд╛ (!) рдРрд╕рд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдЙрд╕рдиреЗ рд▓рд┐рдЦрд╛рдорд╛рдЗрдХрд▓ рдореИрдХрд▓реЗрд▓рди рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдпрд╣рд╛рдВ рд░рд╣рддреЗ рд╣реИрдВ ред
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдиреЗ рдореБрдЭ рдкрд░ рдорд┐рд╢реНрд░рд┐рдд рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рд╛ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдмрди рдЧрдИ рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ - рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЗ рддрд╣рдд рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдЧреВрдВрдЧрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди, рдХрд╣рд╛рдБ рдФрд░ рдХреНрдпреЛрдВред рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╛рдЗрди-рдПрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдореЛрд╕реНрдХ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реБрд░реВ рдореЗрдВ рдЪрд╛рд▓рдХ рдХреЛ рдПрдХ рдкреВрд░реНрдг рд╡рд╛рдпрд░рд┐рдВрдЧ рдЖрд░реЗрдЦ рдХреЗ рд▓рд┐рдП рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереА (рдкреНрд░рддрд┐ рдбреЗрдЯрд╛ рдкреЛрд░реНрдЯ 8 рдмрд┐рдЯреНрд╕, рджреЗрдЦреЗрдВ lcd-mod.sourceforge.net/wiring.php), рдФрд░ рдореБрдЭреЗ рддреБрд░рдВрдд 4-рдмрд┐рдЯ рдмрд╕ рдХрд╛ рд▓рдХреНрд╖реНрдп рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджреНрдпрдкрд┐ рдпрд╣ рдзреАрдорд╛ рд╣реИ (рдмрд╛рдЗрдЯ рдХреЛ рджреЛ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рд▓рдЧрднрдЧ рджреЛ рдмрд╛рд░), рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрдо рдорд┐рд▓рд╛рдк рдХрд░реЗрдЧрд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЕрдиреНрдп рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдФрд░ рддреАрд╕рд░рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 4-рдмрд┐рдЯ рдмрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдХреЛрдб рдерд╛ред рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЦреБрдж рд╕реЗ рдФрд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдпрд╣ рднреА рдмрддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдЧреАрдд рдХреЗ рд╕рд╛рде рдирд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЙрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдПрдХ рдЕрдирдореЛрд▓ рдмрд╛рдд рд╣реИ - рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдЕрдиреБрдХреНрд░рдо рдпрд╛ рдИрдПрд╕рд╕реА рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ "рдкрд┐рдпрд╛рдиреЛ" рдХреЛ рд╣рд┐рд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реАрдбрдореА рдФрд░ рдХреИрд╕реЗ-рдХреИрд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА рдСрдлрд╕рд╛рдЗрдЯ рдкрд░ рднреА рдПрдХ рддрдереНрдп рд╣реИред рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдбреЗрдЯрд╛ рдЪрдврд╝рдирд╛ рди рдкрдбрд╝реЗ, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдПрдХ рдвреЗрд░ рдореЗрдВ рдФрд░ рд░реВрд╕реА рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж, рдЖрдк рд╕рднреА рдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рдЬрдм рдкреНрд░рд┐рдВрдЯрдлрд╝ рдСрдкрд░реЗрдЯрд░ рдиреЗ '\ n' рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдлрд╝реАрдб рдЬреЛрдбрд╝рд╛ - рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдИрдПрд╕рд╕реА рдЕрдиреБрдХреНрд░рдо рд╣реИ, рдЬрд┐рд╕реЗ ASCII рдореЗрдВ рд╡рд░реНрдг 0Ah рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд╡рд╣реА рдЕрдЬрдореЛрдж рдирд┐рд╣рд┐рдд рд╣реИред

рддреЛ, рд╣рдорд╛рд░реА рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ:



рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдХрдорд╛рдВрдб \ 033 рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ!



рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЙрдзрд╛рд░ рд▓реЗрдиреЗ рдХрд╛ рдирд┐рд╢реНрдЪрдп рдХрд┐рдпрд╛ред

рд╡реИрд╕реЗ, рдпреЗ рд╕рднреА рдХреНрд░рдо рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЕрджреНрднреБрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрдиреНрд╣реЗрдВ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреЛ рдЕрднреА рднреА рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рд╣реИ, рдлрд┐рд░ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ lcd-mod.sourceforge.net/faq.php ред рдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдФрд░ рдзреНрдпрд╛рди рд╕реЗ рдЗрд╕реЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛

рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди
Q. , , ?
A. , vt52- ru.wikipedia.org/wiki/VT52 , . , ASCII . , тАФ '\r' '\n' (. ). , :

 echo -en "Line One\r\nLine Two" > /dev/lptlcd 





тАЬLine OneтАЭ тАЬLine TwoтАЭ . , тАЬechoтАЭ :
-n тАФ '\n'
-e тАФ

Q. , ?
A. . рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 echo -en "line1\r\nline2" > /dev/lptlcd 

(. )
Q. , , n n- , n-1 , ?
A. , тАЬechoтАЭ. , '\n' . -n, .

Q. ?
A. : ESC-Y[Y-+037][X-+037]. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 echo -en "\033[Y\037\037Hello" > /dev/lptlcd 



Hello 0:0

, тАЬHelloтАЭ;
 echo -en "\033[Y\040\040Hello" > /dev/lptlcd 

, 1, 1;


Hello 1:1 ( )

 echo -en "\033[Y\041\041Hello" > /dev/lptlcd 

, 2, 2


Hello 2:2 ( , )

тАЬ037тАЭ , , , vt52 ( :) )..

Q. ?
A. HD4480 , . GUI , ( ). , . , .
, : Esc-R[ ][8 , ]. , 5 . . рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 echo -en "\033[R1\037\037\037\037\037\037\037\037" > /dev/lptlcd 

1, . , .




 echo -en "\033[R2\037\000\037\000\037\000\037\000" > /dev/lptlcd 

0 .




┬л┬╗ , :
 echo -en "\000\001\002\003\004\005\006\007" > /dev/lptlcd 



, .


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ dev_write рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЕрдм рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд▓рдЧреА:

 static ssize_t dev_write( struct file *file, const char *buf, size_t count, loff_t *ppos ) { int i; for (i=0; i<count;i++) handleInput(buf[i]); return count; } 


рдФрд░ рд╕рднреА рдЧрдВрджреЗ рдбрд┐рдмреНрд░реАрдлрд┐рдВрдЧ рдХрд╛ рдХрд╛рдо рд╣реИрдВрдбрд▓рдЗрдирдкреБрдЯ рд╕рдорд╛рд░реЛрд╣ рдиреЗ рд╕рдВрднрд╛рд▓рд╛ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдб рд░рд╛рдХреНрд╖рд╕реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЙрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред рдХреЛрдб рдореЗрдВ рдИрд╕реНрдЯрд░ рдЕрдВрдбрд╛ рдХреМрди рдорд┐рд▓реЗрдЧрд╛, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдВ, рд╕реНрд╡реАрдЯреАред
рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рд╡реАрдбрд┐рдпреЛ (рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)


ASCII-ART рдореВрд╡! рдпрд╣ рдИрд╕реНрдЯрд░ рдЕрдВрдбреЗ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреА рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдорд╛рди рд╡реАрдбрд┐рдпреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдореБрдЭрд╕реЗ рдПрдХ рдЙрдкрд╣рд╛рд░ рдорд┐рд▓реЗрдЧрд╛!

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдПрдХ рдХреЛрд╖реЗрд░ рд╕реНрдХреНрд░реАрди рдорд┐рд▓реА, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреА рдФрд░ рдмреЗрдХрд╛рд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрд╕ рдкрд░ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 while true; do echo -en "\033[H`date +\"%d.%m.%Y\"` \r\n`date +%r`" > /dev/lptlcd ; sleep 1s; done 



рдФрд░ рд╡реЗ рдЕрднреА рднреА рдЬрд╛рддреЗ рд╣реИрдВ!

рдмреЗрд╢рдХ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓рд┐рдЦрд╛ - рдЗрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ! рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рдореИрдВ рдЕрднреА рднреА рдХреЛрдб рдПрдХреНрд╕рдЪреЗрдВрдЬ, рд╢рд░реНрдо рдХреЗ рд▓рд┐рдП рдЬреАрдердм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реВрдВ)ред

рдореИрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛



рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдореЗрдЬ рдкрд░ рдЫреЛрдЯреА рд╕реНрдХреНрд░реАрди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреЛрд▓рд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЙрдореНрд░ рдореЗрдВред рдЬрдм рдЖрдкрдХреЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рд╕рдм рдХреБрдЫ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдирдпрд╛ рд╕рд╛рд▓ рдЬрд▓реНрдж рд╣реА рдЖ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдПрдХ рдЕрджреНрднреБрдд рдирдП рд╕рд╛рд▓ рдХреА рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛рдж рд╣реИ - рдПрдХ рдХреНрд░рд┐рд╕рдорд╕ рдХрд╛ рдкреЗрдбрд╝ lpc2104 рдкреНрд░реЛрд╕реЗрд╕рд░


рдПрдВрдмреЗрдбреЗрдб рдЖрд░реНрдЯрд┐рд╕реНрдЯ рдХреНрд░рд┐рд╕реНрдЯрдорд╛рд╕ рдЯреНрд░реА

рдЖрдкрдХреЛ рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ Google рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рднреА рдЗрд╕рдХреЗ рд╕рднреА рд╕рдВрджрд░реНрдн рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рджреБрд░реНрд▓рдн рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рд╢рд╛рд▓ рдореЗрдВ рднреА рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрдВрдЯрд░рдиреЗрдЯред
рдореИрдВрдиреЗ рдЗрд╕ рдХреНрд░рд┐рд╕рдорд╕ рдЯреНрд░реА рдХрд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рднреА рд╢реВрдЯ рдХрд┐рдпрд╛


рдХреНрд░рд┐рд╕рдорд╕ рдХрд╛ рдкреЗрдбрд╝ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛

рд╣реИ рд░реЛрд╢рдиреА рдХреА рдПрдХ рдордЬреЗрджрд╛рд░ рдЭрдкрдХреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдордЬрд╝реЗрджрд╛рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдПрдХ рд╢рд╛рдВрдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдереА - рдЖрдк рдРрд╕реЗ рдХреНрд░рд┐рд╕рдорд╕ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдЕрдиреНрдп рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдЗрдбрдмреЛрд░реНрдб рдерд╛ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлреЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдЪрд▓рд╛ рд╕рдХрддреЗ рдереЗ рдФрд░ рдЗрд╕реЗ рдХреНрд░рд┐рд╕рдорд╕ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдмрд╣реБрдд, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рдордЬреЗрджрд╛рд░ рдерд╛ред

рдЕрдм рдзреНрдпрд╛рди: рд╡рд┐рдЪрд╛рд░! рдЕрдм рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП 500 рд░реВрдмрд▓ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ (рдФрд░ рдпрджрд┐ рд╣рдо рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд░рд╛рд╢рд┐ рдХрд╛рдлреА рдХрдо рд╣реЛрдЧреА), рдФрд░ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрдВред рд╡рд╣рд╛рдВ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд╛рд▓реЗрдВ рдЬреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред рдпрд╛ рддреЛ рдЬреИрдмрд░ рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рддрд░реАрдХреЗ (рд╣рд╛рдБ, рдХрдо рд╕реЗ рдХрдо рдПрдирд╕реА рдФрд░ рдЯреЗрд▓рдиреЗрдЯ рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ)ред рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд░рд┐рд╕реАрд╡рд░ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдФрд░ рдирдП рд╕рд╛рд▓ рдкрд░ рд╣рдо рд╕рднреА рдХреЛ рдмрдзрд╛рдИ рд╣реЛрдЧреАред
рдХреМрди рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдХреМрди рдЕрдкрдиреЗ рд▓рд┐рдП рдРрд╕реА рд╕реНрдХреНрд░реАрди рдмрдирд╛рдПрдЧрд╛? рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рддреАрди рд▓реЛрдЧ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╣реА рдордЬреЗрджрд╛рд░ рд╣реЛрдЧрд╛! рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╣реИрдВрдЧрдЖрдЙрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ :))))ред рдореИрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реБрдиреВрдВрдЧрд╛!

рдкрд░рд┐рдгрд╛рдо



рдореИрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рд╣реВрдВрдЧрд╛редрдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░реНрд╕ рдмреБрдХ рдХреЛ рджреЛрдмрд╛рд░рд╛ рди рд▓реЗрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдлрд╛рдпрд░рд╡реБрдб рд▓рд┐рдЦрдирд╛ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ USB рдЫреЛрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд, рдиреБрдХрд╕рд╛рди рдФрд░ рдЕрдиреНрдп рдмрд╡рд╛рд╕реАрд░ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк USB-LPT-lanyards рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣



рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: usb рдХреЗ рд╕рд╛рде рд╡рд┐рдирд┐рдордп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯреЗрдб рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ - рдпрд╣ рд╕рд░рд▓ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ - рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛!

рдФрд░ рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░, рдХреЗрд╡рд▓ рдПрдХ (!!!) рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреА рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдХрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GPIO рдкреЛрд░реНрдЯ рдкрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рддрдп рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд╢реАрдЯ рдкрдврд╝рдиреЗ рд╕реЗ рддрдп рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рдж:


1. рдореИрдВ рдЕрдкрдиреЗ рд╢рд┐рдХреНрд╖рдХ рдмреЛрд░реЛрдирд┐рди рд╕рд░реНрдЧреЗрдИ рд╕рд░реНрдЧреЗрд╡рд┐рдЪ рд╕реЗрдмрд░реЛрдирд┐рди рдХреЛ рд▓рд╛рдЗрдирдХреНрд╕ рдХреЗ рддрд╣рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реАрдЦрдиреЗ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдХреГрд╖реНрдЯ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдореБрдЦреНрдп рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ред рдЕрдкрдиреЗ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рд╕рдлрд▓ рд░рд╣рд╛ рд╣реВрдВред
2. рдХреЙрдорд░реЗрдб рдЕрд░рд┐рдорди рдиреЗ рд░рд╛рдЙрдЯрд░ ( рдкрд╣рд▓реЗ , рджреВрд╕рд░реЗ , рддреАрд╕рд░реЗ рднрд╛рдЧ (рд▓реЗрдХрд┐рди рдЪреМрдерд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ...) рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдЕрдкрдиреА рдЕрджреНрднреБрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде )ред рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИред рдФрд░ рдореИрдВ рдмрд╛рд░-рдмрд╛рд░, рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдФрд░ OpenWRT рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдЕрдореВрд▓реНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдПрдХ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрд╕рдХреА рдУрд░ рд░реБрдЦ рдХрд┐рдпрд╛ рд╣реИред
3. рдмреЗрд╢рдХ, "рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░" рдкреБрд╕реНрддрдХ рдХреЗ рд▓реЗрдЦрдХ рдЧреНрд░реЗрдЧ рдХреНрд░реЛрд╣рд╛-рд╣рд╛рд░реНрдЯрдореИрди рд╣реИрдВ ред рдпрд╣ рдкреБрд╕реНрддрдХ рд╕рд┐рд░реНрдл рдмрд╛рдЗрдмрд┐рд▓ рд╣реИ, рдФрд░ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЖрдк рдЕрдХреНрд╕рд░ рдРрд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, USB рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ рдореИрдВ рдЗрд╕ рдкрд╛рд░ рдЖрдпрд╛:

/drivers/usb/misc/idmouse.c
...
рдпреВрдПрд╕рдмреА рдХрдВрдХрд╛рд▓ рдЪрд╛рд▓рдХ 1.1 рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди,
рдХреЙрдкреАрд░рд╛рдЗрдЯ ┬й 2003 рдЧреНрд░реЗрдЧ рдХреНрд░реЛрд╣-рд╣рд╛рд░реНрдЯрдореИрди (greg@kroah.com)
...


рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрдИ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВред рдЗрд╕рд▓рд┐рдП рдкреБрд╕реНрддрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдпрд╣ рдПрдХ рдмрд╛рдЗрдмрд┐рд▓ рд╣реИред
4. рдорд╛рдЗрдХрд▓ рдореИрдХрд▓реЗрд▓рди рдПрдХ рд╕рдорд╛рди рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣ рдЕрдкрдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ:

* HD44780 рдХреЗ рд▓рд┐рдП рдПрд▓рд╕реАрдбреА рдбреНрд░рд╛рдЗрд╡рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрдЧрдд рдбрд┐рд╕реНрдкреНрд▓реЗ,
* рдХреНрдпреЛрдВрдХрд┐ рдЕрд╕рд▓реА рдкреБрд░реБрд╖ рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рд▓рд┐рдВрдХрд┐рди рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ ред рдЙрдирдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рдореЗрд▓ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрд╕реЗ рдХреИрд╕реЗ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ ... рдЕрдЧрд░ рдХреЛрдИ рднреА рдЙрд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рд╕рдВрджрд░реНрдн

1. рдкреНрд░рджрд░реНрд╢рди rootfs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рд╕реНрд╡рд┐рдВрдЧ
2. рдореЗрд░реЗ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬреЛ рд╣рдо рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╕реНрд╡рд┐рдВрдЧ
3. рдЭрд╛рдбрд╝рд┐рдпреЛрдВ ┬╗рдореЗрдВ" рдкрд┐рдпрд╛рдиреЛ
4. dmilvdv.narod.ru/translate.html рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рджред рд╣реИрдВрдбрдмреБрдХ рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░реНрд╕, рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред "
5. рдЖрдИрдмреАрдПрдо рд╕реЗ рд░реВрд╕реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рд▓реЗрдЦреЛрдВ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╣рд╛рдВ рд░рд╣рддрд╛ рд╣реИ ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ ред
6. HD44780 рдбрд┐рд╕реНрдкреНрд▓реЗ рдХрд╛ рд╡рд┐рд╡рд░рдг (AVR рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрд╣ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ) easyelectronics.ru/avr -uchebnyj-kurs-podklyuchenie-k-avr-lcd-displeya-hd44780.html
7. рдорд╛рдЗрдХрд▓ рдореИрдХрд▓реЗрд▓рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо (рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХ)linux.downloadatoz.com/developer-michael-mclellan.html

PS рдкрд┐рдпрд╛рдиреЛрд╡рд╛рджрдХ рдХреЛ рдЧреЛрд▓реА рдордд рдорд╛рд░реЛ, рд╡рд╣ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рдЦреЗрд▓рддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реА рдЬрдиреНрдордЬрд╛рдд рдЕрд╢рд┐рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде, рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд▓реЗрдЦ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгреА, рд╕реБрдзрд╛рд░ рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдЕрд╡рд╢реНрдп рднреЗрдЬреЗрдВ, рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ !!!
PPS рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рддрд░рд╣ рдЖрддреНрдорд╛ рдХреЛ рдЧрд░реНрдо рдХрд░рддрд╛ рд╣реИред
PPPS рдкрд╛рда рдореЗрдВ рдПрдХ рдИрд╕реНрдЯрд░ рдЕрдВрдбрд╛ рднреА рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕реЗ рдЦрд╛рддрд╛ рд╣реИ рд╡рд╣ рд╕реНрд╡реАрдЯреА рд╣реИ;)))

UPD рддреЛ рдореИрдВрдиреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ рдЬреЛ рдореИрд╕реЗрдВрдЬрд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ :)
рдЙрди рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреГрдкрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ :))

Source: https://habr.com/ru/post/In206148/


All Articles